Rxjs 什么';VirtualTimeScheduler和TestScheduler之间的区别是什么?

Rxjs 什么';VirtualTimeScheduler和TestScheduler之间的区别是什么?,rxjs,rxjs6,Rxjs,Rxjs6,我在Rxjs测试中有时看到TestScheduler,有时看到VirtualTimeScheduler。 你能解释一下有什么不同吗?我应该在哪里使用什么 declare const rxTestScheduler:TestScheduler; const scheduler=新的VirtualTimeScheduler(); VirtualTimeScheduler是一种不使用实时的调度器,它允许您通过创建有序的事件列表来使用需要实时处理的可观察对象和运算符。然后,您可以刷新所有排队的事件,它们

我在Rxjs测试中有时看到
TestScheduler
,有时看到
VirtualTimeScheduler
。 你能解释一下有什么不同吗?我应该在哪里使用什么

declare const rxTestScheduler:TestScheduler;
const scheduler=新的VirtualTimeScheduler();

VirtualTimeScheduler
是一种不使用实时的调度器,它允许您通过创建有序的事件列表来使用需要实时处理的可观察对象和运算符。然后,您可以刷新所有排队的事件,它们将一个接一个地被处理

例如,当您使用
延迟时:

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();
现场演示:

请注意,即使在使用
100000
时,您也不会真正等待100秒,结果是立即的。您可能永远不需要使用
VirtualTimeScheduler
本身(或者至少我从未见过它的任何用例)


然后,
TestScheduler
仅扩展了
VirtualTimeScheduler
,并提供了一些处理大理石图表的附加方法。

VirtualTimeScheduler
是一种不使用实时的调度器,允许您通过创建有序的事件列表来使用需要实时处理的可观察对象和运算符。然后,您可以刷新所有排队的事件,它们将一个接一个地被处理

例如,当您使用
延迟时:

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();
现场演示:

请注意,即使在使用
100000
时,您也不会真正等待100秒,结果是立即的。您可能永远不需要使用
VirtualTimeScheduler
本身(或者至少我从未见过它的任何用例)

然后,
TestScheduler
仅扩展了
VirtualTimeScheduler
,使用了一些用于处理大理石图的附加方法