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