RxJS计时器不等待指定的时间?



我正试着用RxJS来思考。在做一些测试时,我遇到了一些我无法理解的事情。

这是代码:

let product = { id: 1, description: 'table' };
const asyncProduct = timer(2000).pipe(() => of(product));
asyncProduct.subscribe(data=>console.log(data))

我原以为product会在2秒钟后登录到我的控制台,但由于某种原因,它会立即登录。我误解了什么?谢谢

要在n秒后发射,需要使用delay运算符而不是timer

因此,您需要以这种方式更改代码:

const asyncProduct = of(product).delay(2000)
asyncProduct.subscribe(data => console.log(data))

更新:您可以将timer运算符与pipe一起使用,然后与其中的另一个运算符一起使用,如下所示:

timer(2000).pipe(
switchMap(() => of(product))
).subscribe(data => console.log(data))

通过这种方式,数值将在2秒钟后发生变化,从而达到您的目标。是另一种方式,而不是我之前提供的第一个例子。

最新更新