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

RxJS timer doesn't wait for specified time?

我正在努力研究 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秒后发出表情,达到你的目的。是另一种方式,而不是我之前提供的第一个示例。