В чем разница между VirtualTimeScheduler и TestScheduler? - PullRequest
4 голосов
/ 02 мая 2019

Я вижу в тестах Rxjs иногда TestScheduler, а иногда VirtualTimeScheduler. Не могли бы вы объяснить, в чем разница, и где я должен использовать что?

declare const rxTestScheduler: TestScheduler;
const scheduler = new VirtualTimeScheduler();

1 Ответ

2 голосов
/ 02 мая 2019

VirtualTimeScheduler - это планировщик, который не использует реальное время и позволяет вам использовать Observables и операторы, которые должны работать в реальном времени, создав упорядоченный список событий.Затем вы можете сбросить все события в очереди, и они будут обрабатываться одно за другим.

Например, когда вы используете 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();

Live демо: https://stackblitz.com/edit/rxjs-zcmxg1

Обратите внимание, что даже при использовании 100000 вы на самом деле не ждете 100 секунд и результат мгновенный.Вам, вероятно, никогда не понадобится использовать VirtualTimeScheduler (или, по крайней мере, я никогда не видел ни одного варианта использования).

Тогда TestScheduler расширяет VirtualTimeScheduler только некоторыми дополнительными методами для работыс мраморными диаграммами.

...