如何在RXJS中发出延迟值?

时间:2017-12-10 09:23:22

标签: javascript rxjs

我有一组值[1,2,3]

我想用延迟发出每个值

我已成功使用zip运算符:

 Rx.Observable.from([1,2,3])
   .zip(Rx.Observable.timer(0, 1000), x => x)
   .subscribe((e) => console.log(e));

问题:

是否有更适合此类任务的操作员?涉及内在的观察似乎(对我而言)不正确的方法 我应该手动取消订阅内部Observable吗?因为基本上没有人告诉它停止。

jsbin

1 个答案:

答案 0 :(得分:5)

您可以延迟每次排放,并等到上一次完成。像这样举例如:

Rx.Observable.from([1,2,3])
   .concatMap(x => Observable.of(x).delay(1000)) // or Observable.timer(1000).mapTo(x)
   .subscribe((e) => console.log(e));

如果您想使用zip,则无需取消订阅timer,但您需要告知其完成(例如take()takeUntil()