Referencedefer
Reference · 06
defer
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
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...