如果我像这样使用delay()
函数,它只会在经过一段时间后才发出数据:
const TIME_DELAY = 5000;
return new Observable(observer => {
observer.next(res);
}).delay(TIME_DELAY);
但是我需要首先发出数据,然后每TIME_DELAY毫秒发出一次。 我怎样才能做到这一点?
答案 0 :(得分:2)
根据您的要求,timer
正是这样做的。像这样:
return timer(0, TIME_DELAY).pipe(
map(() => res)
);
答案 1 :(得分:1)
您应该使用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$));