通过调度程序按数据中定义的时间延迟rxjs 5可观测发射
我想延迟数据流,延迟时间如数据中所定义:通过调度程序按数据中定义的时间延迟rxjs 5可观测发射,rxjs,rxjs5,Rxjs,Rxjs5,我想延迟数据流,延迟时间如数据中所定义: Rx.Observable.from([ {message: "one", delay: 100}, {message: "two", delay: 500}, {message: "three", delay: 10500} ]).subscribe((e) => console.log(e.message)) 它应该在100毫秒后记录“一”,在500毫秒后记录“二” 我希望能够在发出消息“三”之前取消计时器 如何定义rxjs
Rx.Observable.from([
{message: "one", delay: 100},
{message: "two", delay: 500},
{message: "three", delay: 10500}
]).subscribe((e) => console.log(e.message))
.concatMap
每次发射都必须等待延迟的前一次发射完成,然后才能进行下一次发射:
Rx.Observable.from([
{电文:“一”,延迟:500},
{电文:“两”,延迟:500},
{电文:“三”,延迟:500}
])
.concatMap(val=>Rx.Observable.of(val.message).delay(val.delay))
.subscribe(val=>console.log(val))
根据您想要延迟的方式,您可以选择以下几种路线:
延迟每次发射之间的给定时间
使用.concatMap
每次发射都必须等待延迟的前一次发射完成,然后才能进行下一次发射:
Rx.Observable.from([
{电文:“一”,延迟:500},
{电文:“两”,延迟:500},
{电文:“三”,延迟:500}
])
.concatMap(val=>Rx.Observable.of(val.message).delay(val.delay))
.subscribe(val=>console.log(val))
这是非常广泛的描述。您希望在100毫秒时发射“一”,在500毫秒或100+500毫秒时发射“二”?您可以通过取消订阅或使用诸如takeUntil()
或只使用filter()
之类的运算符来取消排放。那么,您能更具体地描述您的用例吗?我想安排从激活/订阅可观测对象开始的发射。调度程序应该允许我在激活observable后取消所有已安排的事件,并安排事件。因此,您有自己的自定义调度程序?如果没有可用的调度程序可以处理它,那么这可能是非常广泛的描述。您希望在100毫秒时发射“一”,在500毫秒或100+500毫秒时发射“二”?您可以通过取消订阅或使用诸如takeUntil()
或只使用filter()
之类的运算符来取消排放。那么,您能更具体地描述您的用例吗?我想安排从激活/订阅可观测对象开始的发射。调度程序应允许我在激活可观察对象后取消所有计划的事件,并对事件进行调度。因此,您有自己的自定义调度程序?如果没有可用的调度程序可以处理它,则是可能的重复