rxjs asapscheduler的执行顺序
考虑到我有以下代码:rxjs asapscheduler的执行顺序,rxjs,rxjs6,rxjs-observables,rxjs-pipeable-operators,rxjs-marbles,Rxjs,Rxjs6,Rxjs Observables,Rxjs Pipeable Operators,Rxjs Marbles,考虑到我有以下代码: let Rx=window['rxjs']; 常数, 队列调度器, 作为调度员, 异步调度程序, animationFrameScheduler }=Rx; const{observeOn,tap}=Rx.operators; console.clear(); 让source$=of(1,2,3,asapScheduler).pipe( 轻触((v)=>{ 控制台日志('tap',v); }), ) source$.subscribe((v)=>{ console.log
let Rx=window['rxjs'];
常数,
队列调度器,
作为调度员,
异步调度程序,
animationFrameScheduler
}=Rx;
const{observeOn,tap}=Rx.operators;
console.clear();
让source$=of(1,2,3,asapScheduler).pipe(
轻触((v)=>{
控制台日志('tap',v);
}),
)
source$.subscribe((v)=>{
console.log('Value',v);
Promise.resolve()然后(()=>{
console.log('Microtask value',v);
});
});代码>
据我所知,RxJS倾向于使用独立的调度器。它的工作原理与预期一致:
let source$ = of(1, 2, 3).pipe(
tap((v) => {
console.log('tap ', v);
}),
)
source$.subscribe((v) => {
asapScheduler.schedule(() => console.log('Value ', v));
asyncScheduler.schedule(() => Promise.resolve().then(() => {
console.log('Microtask value ', v);
}))
})
另一种意思是,如果您在您的可观察对象中使用调度程序
,比如(…,asapScheduler)
,-它会获取您的可观察对象的完整路径流,从创建到订阅结束,并尝试尽快调用它。在您的微任务示例中,它看起来是合理的。所涉及的步骤:
要深入研究,请参考此您能解释一下执行流程吗?我已经更新了问题。每一次发射都像一个承诺一样工作吗(在内部尽快)?因为你在流程中使用调度程序,它会尽快完成微任务,即使不是所有的宏任务都完成了。我真的不明白。如果您能在回答中解释流程,那就太好了。如果它试图尽快完成,为什么在打印tap1和value1之后不打印微任务值1和微任务值2?