Если я использую функцию delay()
следующим образом, она генерирует данные только после некоторой задержки:
const TIME_DELAY = 5000;
return new Observable(observer => {
observer.next(res);
}).delay(TIME_DELAY);
Но мне нужно сначала передать данные, а затем отправлять их каждые миллисекунды TIME_DELAY. Как я могу это сделать?
2 ответа
Для ваших требований timer
делает именно это. Что-то вроде:
return timer(0, TIME_DELAY).pipe(
map(() => res)
);
https://stackblitz.com/edit/typescript-v7auxo?file=index.ts
Вы должны использовать функцию таймера, которая позволяет указать начальную задержку (0 в вашем случае), а затем интервал, в котором выбросы повторяются.
Например: const stream$ = timer(0, TIME_DELAY);
Если вам нужно привести результат к другому значению или наблюдаемому, вы можете добавить конвейер и операторы map
или switchMap
(в случае наблюдаемого). Например:
const stream$ = timer(0, TIME_DELAY)
.pipe(map(() => 'some value'));
// or
const stream$ = timer(0, TIME_DELAY)
.pipe(switchMap(() => anotherObservable$));
Похожие вопросы
Новые вопросы
angular
Вопросы по Angular (не путать с AngularJS), веб-фреймворку от Google. Используйте этот тег для угловых вопросов, которые не относятся к конкретной версии. Для более старой веб-платформы AngularJS (1.x) используйте тег angularjs.