BACK
Уроки11. timer: отложенное значение
Уроки · 11

11. timer: отложенное значение

timer — отложенный пуск

timer(delay) — это RxJS-аналог setTimeout. Он ждёт указанное число миллисекунд, отправляет одно значение (число 0) и сразу завершает поток.

timer(20)
// ждёт 20 мс → next(0) → complete()

Виртуальное время — что это такое

Если бы мы реально ждали миллисекунды, тесты были бы медленными и нестабильными. Поэтому RxJS даёт TestScheduler — «виртуальное время», в котором миллисекунды проматываются мгновенно. В этом уроке мы впервые используем такую проверку.

Глоссарий

  • TestScheduler — специальный планировщик RxJS, который позволяет проверять асинхронные потоки без реального ожидания.
  • Marble-строка — текстовая запись потока. 20ms (a|) читается как «через 20 миллисекунд произошло значение a и завершение | одновременно».

Что нужно сделать

  1. Найдите строку const done$ = EMPTY; и замените EMPTY на timer(20).
  2. Больше менять ничего не нужно. Marble-проверка уже описывает ожидаемое поведение.

Детерминированная проверка

Проверка идёт через виртуальное время TestScheduler. Если решение верное, в консоли появится только Test Passed!. Не добавляйте лишних console.log — это сломает сравнение.

Решение spoiler · click to reveal
const { timer } = Rx;

const done$ = timer(20);
script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...