我只想在特定的时间间隔(特别是 3 秒和 6 秒)调用一个函数,并且很难找到正确的运算符来使用。
bufferTime 似乎是一个不错的候选者,但它输出的数组不是我所期望的。
这是一个简短的例子:
summarize(): void {
const responseInterval = interval(1000);
const responseIntervalObservable = responseInterval.pipe(bufferTime(1000));
responseIntervalObservable.subscribe(intervalValue => {
console.log('intervalValue', intervalValue);
});
}
输出:
intervalValue []
intervalValue [0, 1]
intervalValue [2]
intervalValue [3]
intervalValue [4]
intervalValue [5]
intervalValue [6]
intervalValue [7]
intervalValue [8]
我希望看到类似
[1], [2], [3]
的东西,这样我就可以在 3 秒处专门调用一个函数,然后在 6 秒处再次调用。
什么是正确的或更好的运算符?
我最终只是使用
interval
而不是将 bufferTime 放在中间。这会为迭代发出一个从零开始的索引,而不是一个数组。
然后我可以检查索引中的特定值,直到请求完成或超时。
不确定这是否太过分了,但你可以这样做。
interval(1000)
.pipe(
filter((i) => i === 3 || i === 6),
tap((i) => console.log(i, 'seconds have passed')),
filter((i) => i === 6),
take(1),
finalize(() => console.log('Unsubscribe'))
)
.subscribe();