如何在RXJS中延迟发出值?

Roy*_*mir 2 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));
Run Code Online (Sandbox Code Playgroud)

题:

是否还有其他合适的运算符可用于此类任务?在我看来,涉及内在的可观察性似乎是不正确的方法。
我应该手动取消订阅内部Observable吗?因为基本上没有人告诉它停止。

jsbin

mar*_*tin 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));
Run Code Online (Sandbox Code Playgroud)

如果您想使用zip,则不需要取消订阅,timer而是需要告诉它完成操作(例如,使用take()takeUntil())。