我在Rxjs中看到测试有时TestScheduler
,有时VirtualTimeScheduler
。
您能解释一下有什么区别,我应该在哪里使用?
declare const rxTestScheduler: TestScheduler;
const scheduler = new VirtualTimeScheduler();
答案 0 :(得分:2)
VirtualTimeScheduler
是一个不使用实时的调度程序,通过创建事件的有序列表,您可以使用需要实时工作的Observable和运算符。然后,您可以刷新所有排队的事件,然后将它们依次处理。
例如,当您使用delay
时:
import { of, VirtualTimeScheduler } from 'rxjs';
import { delay } from 'rxjs/operators';
const scheduler = new VirtualTimeScheduler();
of(1).pipe(
delay(100000, scheduler),
).subscribe(console.log);
scheduler.flush();
实时演示:https://stackblitz.com/edit/rxjs-zcmxg1
请注意,即使使用100000
,您也不会真正等待100秒,结果是立竿见影的。您可能永远不需要自己使用VirtualTimeScheduler
(或者至少我从未见过任何用例)。
然后,TestScheduler
仅扩展了VirtualTimeScheduler
,并提供了一些其他处理大理石图的方法。