Rxjs Scheduler:asap和async之间的区别是什么?

时间:2017-11-19 13:12:22

标签: rxjs

有人可以告诉我Scheduler.asap和Scheduler.async之间的区别吗?

对我来说一样:

$request->session()->keep('status');

返回:

const observable = Observable.create(function (observer) {
  observer.next(1);
  observer.next(2);
  observer.next(3);
  observer.complete();
})
.observeOn(asap);
//.observeOn(async);

console.log('just before subscribe');
observable.subscribe({
  next: x => console.log('got value ' + x),
  complete: () => console.log('done'),
});
console.log('just after subscribe');

代码 - https://stackblitz.com/edit/rxjs-85vczc?file=app/hello.component.ts

3 个答案:

答案 0 :(得分:0)

async调度程序最适合用于基于时间的操作(使用setInterval即使时间延迟为0 ... ex.polling),其中asap调度程序更适合需要尽可能快地发生的异步操作,无论时间如何。

查看更多here

答案 1 :(得分:0)

来自:Randall Koutnik的书“使用RxJS构建反应性网站”。 :

RxJS 具有两种不同类型的异步调度程序尽快异步 。主要区别在于 ap 可观察的事件安排为使用 micro任务队列(Node.js中的process.nextTick()或浏览器)。这意味着事件在任何同步代码之后之后,但在任何其他预定的异步任务之前运行强>。另一个主要的调度程序 async 使用 setTimeout 进行调度,适用于一些基于时间的操作

答案 2 :(得分:0)

当您包装在 setTimeout 或 setInterval(事件循环宏任务)中时要考虑的 Aysnc 调度程序

当您包装在 Promise(在当前宏任务之后执行的下一个微任务)时要考虑的 Asap 调度程序