RxJS: испустить начальное значение до задержки - PullRequest
0 голосов
/ 28 мая 2019

Если я использую delay() функцию, подобную этой, она генерирует данные только после некоторой задержки:

const TIME_DELAY = 5000;
return new Observable(observer => {
  observer.next(res);
}).delay(TIME_DELAY);

Но мне нужно сначала отправить данные, а затем отправлять их каждые TIME_DELAY миллисекунды.Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 28 мая 2019

Для ваших требований timer делает именно это. Что-то вроде:

return timer(0, TIME_DELAY).pipe(
  map(() => res)
);

https://stackblitz.com/edit/typescript-v7auxo?file=index.ts

1 голос
/ 28 мая 2019

Вы должны использовать функцию timer , которая позволяет вам указать начальную задержку (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$));


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...