BACK
Referencedefer
Reference · 06

defer

Создаёт Observable «лениво» — фабрика вызывается на каждой подписке.

Сигнатура

defer(observableFactory: () => ObservableInput): Observable

Что делает

Откладывает создание Observable до момента subscribe. Каждый подписчик получает «свежий» Observable от фабрики. Это превращает значения, которые иначе зафиксировались бы при создании (Date.now, new Promise(...), random), в по-настоящему ленивые.

Когда использовать

Нужен новый Promise/HTTP-запрос на каждого подписчика. Нужны актуальные данные на момент подписки, а не на момент конфигурации pipe. Хотите сделать обычный код холодным Observable.

Подводный камень

of(fetch('/api')) создаст один Promise при загрузке модуля. defer(() => fetch('/api')) — на каждой подписке.

См. также

from, iif, shareReplay

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...