zoukankan      html  css  js  c++  java
  • [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
      }
  • 相关阅读:
    [NOI2008] [bzoj1061] 志愿者招募
    [bzoj1070] 修车
    [群内模拟4.8] 定点爆破 后宫着♂火 签到题
    初识费用流 模板(spfa+slf优化) 餐巾计划问题
    Chromium的无锁线程模型C++代码示例
    JavaScript的Date类的函数特殊处理导致的问题
    ssh免密码快速登录配置
    container-with-most-water(最大蓄水问题)
    死锁
    美团2018春招编程题第一题 字符串距离 O(n)解法
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12791548.html
Copyright © 2011-2022 走看看