Уроки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')для категории. - Любая ситуация, когда нужно немедленное значение «до того, как что-то случится».
Что нужно сделать
- Внутри
pipeдобавьтеstartWith('Loading'). - Ожидаемый вывод:
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
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...