对RxJS5中的默认调度行为感到困惑

对RxJS5中的默认调度行为感到困惑,rxjs,observable,rxjs5,Rxjs,Observable,Rxjs5,在RxJS4中,以下代码将冻结您的环境: Rx.Observable.of(10) .重复 .采取(1) .subscribe(值=>{ console.log(值); }); 这是因为它将在即时调度程序上运行repeat,并且永远不会到达take。现在在RxJS5中没有即时调度器,但如果我运行相同的代码,一切都会按预期工作。到底更改了什么?我们运行的是什么计划程序?我认为默认情况下没有调度程序,如果我理解正确的话,这也会冻结repeat。RxJS 5中的默认调度程序是同步的-过去称为立即的

在RxJS4中,以下代码将冻结您的环境:

Rx.Observable.of(10)
.重复
.采取(1)
.subscribe(值=>{
console.log(值);
});

这是因为它将在即时调度程序上运行
repeat
,并且永远不会到达
take
。现在在RxJS5中没有即时调度器,但如果我运行相同的代码,一切都会按预期工作。到底更改了什么?我们运行的是什么计划程序?我认为默认情况下没有调度程序,如果我理解正确的话,这也会冻结
repeat

RxJS 5中的默认调度程序是同步的-过去称为立即的

(下)


RxJS 4中的默认调度程序不是即时的,它是“默认”的,现在称为“asap”-基本上是在微任务队列上调度的

从语义上讲,无论您在哪个调度程序上,这都应该有效。也就是说,它应该在4中有效。您有一个无限的10个源流,并且您获取了其中的1个,然后取消订阅。这会触发要处理的
repeat()
的内部订阅,从而打破您的无限循环。这可能是4中的一个bug