我正试着用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秒钟后发生变化,从而达到您的目标。是另一种方式,而不是我之前提供的第一个例子。