浏览器如何处理内部可观察的内容?

时间:2018-12-23 04:01:51

标签: angular browser promise observable event-loop

Promise是由浏览器提供的api,它以异步方式执行耗时的时间。事件循环的完成完成后,功能将在promise中执行.observables是否也由浏览器以与浏览器也同样的方式进行处理? observables在内部实现了异步行为?

1 个答案:

答案 0 :(得分:0)

可观察对象本质上不是异步的-它们只是基于推送的。例如:

console.log(1);
Observable.of(1).subscribe(() => console.log(2));
console.log(3);

将记录1,2,3,而不记录1,3,2,例如:

console.log(1);
Promise.resolve(1).then(() => console.log(2)); // then is `async`
console.log(3);

可观察对象可以使用调度程序,该调度程序使用来自浏览器本身的异步源-例如setTimeout。您可以通过向Rx函数(例如from(10, Rx.scheduler.asap))传递另一个参数来配置Rx的调度程序。

尽管Promise库在本机Promise之前就已经存在。那时,他们使用setTimeout,消息通道,变异观察者或其他黑客手段来获取异步性。