我有一组值[1,2,3]
。
我想用延迟发出每个值
我已成功使用zip
运算符:
Rx.Observable.from([1,2,3])
.zip(Rx.Observable.timer(0, 1000), x => x)
.subscribe((e) => console.log(e));
问题:
是否有更适合此类任务的操作员?涉及内在的观察似乎(对我而言)不正确的方法 我应该手动取消订阅内部Observable吗?因为基本上没有人告诉它停止。
答案 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()
)