RxJS queue

2020-09-27 16:53 更新

队列调度器

  1. const queue: any;

描述

将每个下一个任务放在队列中,而不是立即执行

queue 延迟使用调度程序时,其行为与 async 调度程序相同。

当没有延迟使用时,它将同步安排给定的任务-在安排好任务后立即执行。但是,当递归调用时(即在已调度的任务内部),将使用队列调度程序调度另一个任务,而不是立即执行,该任务将被放入队列并等待当前任务完成。

这意味着,当您使用 queue 调度程序执行任务时,您确定它会在该调度程序调度的其他任何任务开始之前结束。

例子

先递归调度,然后再做某事

  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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号