RxJS queue

2020-09-27 16:53 更新

隊列調(diào)度器

  1. const queue: any;

描述

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

queue 延遲使用調(diào)度程序時,其行為與 async 調(diào)度程序相同。

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

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

例子

先遞歸調(diào)度,然后再做某事

  1. import { queueScheduler } from 'rxjs';
  2. queueScheduler.schedule(() => {
  3. queueScheduler.schedule(() => console.log('second')); // will not happen now, but will be put on a queue
  4. console.log('first');
  5. });
  6. // Logs:
  7. // "first"
  8. // "second"

遞歸重新安排自身

  1. import { queueScheduler } from 'rxjs';
  2. queueScheduler.schedule(function(state) {
  3. if (state !== 0) {
  4. console.log('before', state);
  5. this.schedule(state - 1); // `this` references currently executing Action,
  6. // which we reschedule with new state
  7. console.log('after', state);
  8. }
  9. }, 0, 3);
  10. // In scheduler that runs recursively, you would expect:
  11. // "before", 3
  12. // "before", 2
  13. // "before", 1
  14. // "after", 1
  15. // "after", 2
  16. // "after", 3
  17. // But with queue it logs:
  18. // "before", 3
  19. // "after", 3
  20. // "before", 2
  21. // "after", 2
  22. // "before", 1
  23. // "after", 1
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號