RxJS queue

2020-09-27 16:53 更新

隊列調度器

const queue: any;

描述

將每個下一個任務放在隊列中,而不是立即執(zhí)行

queue 延遲使用調度程序時,其行為與 async 調度程序相同。

當沒有延遲使用時,它將同步安排給定的任務-在安排好任務后立即執(zhí)行。但是,當遞歸調用時(即在已調度的任務內部),將使用隊列調度程序調度另一個任務,而不是立即執(zhí)行,該任務將被放入隊列并等待當前任務完成。

這意味著,當您使用 queue 調度程序執(zhí)行任務時,您確定它會在該調度程序調度的其他任何任務開始之前結束。

例子

先遞歸調度,然后再做某事

import { queueScheduler } from 'rxjs';


queueScheduler.schedule(() => {
  queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue


  console.log('first');
});


// Logs:
// "first"
// "second"

遞歸重新安排自身

import { queueScheduler } from 'rxjs';


queueScheduler.schedule(function(state) {
  if (state !== 0) {
    console.log('before', state);
    this.schedule(state - 1); // `this` references currently executing Action,
                              // which we reschedule with new state
    console.log('after', state);
  }
}, 0, 3);


// In scheduler that runs recursively, you would expect:
// "before", 3
// "before", 2
// "before", 1
// "after", 1
// "after", 2
// "after", 3


// But with queue it logs:
// "before", 3
// "after", 3
// "before", 2
// "after", 2
// "before", 1
// "after", 1
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號