• [RxJS] Schedular basic


      subscribeOn() {
        // Changes source execution
        // only used once
        of(1).pipe(
          subscribeOn(async)
        )
        .subscribe({
          next: x => console.log(x),
          complete: () => console.log('3')
        })
        console.log('2')
    
        //2 1 3
      }
    
      observeOn() {
        // Changes notifications execution  (next, error, complete)
        // Can be used before each operators
      }
    
      queueSchedular() {
        // execute synchronously
        // tasks execute in order
        // waits until current task ends before exeucting next one
        // performant (precedes event loop)
    
        queue.schedule(() => console.log(1)) // sync
        console.log(2) // sync
        queue.schedule(() => console.log(3)) // sync
        
        // 1 2 3
    
        queue.schedule(() => {
          // when nested queue, change behavior
          queue.schedule(() => console.log(1)) // async
          console.log(2) // sync
          queue.schedule(() => console.log(3)) // async
        })
    
        // 2 1 3
      }
    
      asapSchedular() {
        // executes asynchronously (micro)
        // Tasks execute before next tick
        // Relays on Promises
        // Performant (precedes event loop)
        setTimeout(() => console.log(1)) // macro
        asap.schedule(() => console.log(2)) // micro
        queue.schedule(() => console.log(3)) // snyc
    
        // 3 2 1
      }
    
      asyncSchedular() {
        // Executes asynchronously (macro)
        // Relays on setInterval
        // less performant (use event loop)
        async.schedule(() => console.log(1)) // macro
        asap.schedule(() => console.log(2)) // micro
        queue.schedule(() => console.log(3)) // snyc
    
        // 3 2 1
      }
    
      cancelling() {
        const s = new AsyncScheduler(AsyncAction)
        const DELAY = 0;
        let subscription = s.schedule(v => console.log(v), DELAY, '1')
        s.schedule(v => console.log(v), DELAY, '2')
        console.log('3')
        subscription.unsubscribe();
    
        // 3 2 
        // 1 got cancelled
      }
    
      internalTime() {
        const s = new AsyncScheduler(AsyncAction)
        const DELAY = 2000; 
        const start = Date.now()
    
        s.schedule(v => console.log(v), DELAY, 1)
        s.schedule(v => console.log(v), DELAY, 2)
        s.schedule(v => console.log(`${s.now() - start}ms`), DELAY)
        console.log(3)
    
        // 3 1 2 2008ms
      }
  • 相关阅读:
    30行代码实现微信自动回复机器人
    用Python来P图
    部署Scrapy分布式爬虫项目
    为什么自学Python看不进去?0基础入门Python有哪些捷径?
    学Python Web开发框架到什么程度可以找到开发的工作?
    Python不能帮你找到女朋友,却能让你成为有钱的单身狗
    SQL 的基本使用概念简介
    Python 面向对象编程的一些知识点总结
    一 数据的概括性度量
    三 k-近邻算法(k-Nearest Neighbors KNN)
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12791548.html
Copyright © 2020-2023  润新知