BACK
Уроки17. startWith: начальное значение для UI
Уроки · 17

17. startWith: начальное значение для UI

startWith — стартовое значение

Часто UI должен сразу что-то показать, не дожидаясь данных с сервера. Например: «Loading...», пустой список, дефолтные настройки. Оператор startWith(value) добавляет начальное значение в самое начало потока.

of('Loaded').pipe(startWith('Loading'))
// next('Loading') → next('Loaded') → complete()

Где это часто встречается

  • Состояния загрузки: показать «Loading...» до ответа HTTP-запроса.
  • Дефолты для фильтров: startWith('') для поля поиска, startWith('all') для категории.
  • Любая ситуация, когда нужно немедленное значение «до того, как что-то случится».

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

  1. Внутри pipe добавьте startWith('Loading').
  2. Ожидаемый вывод: State: Loading → State: Loaded. Первое значение появилось мгновенно, второе — из источника.
Решение spoiler · click to reveal
const { of, startWith } = Rx;

const state$ = of('Loaded').pipe(
  startWith('Loading')
);

state$.subscribe(value => {
  console.log('State: ' + value);
});
script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...