通过调度程序按数据中定义的时间延迟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))
  • 它应该在100毫秒后记录“一”,在500毫秒后记录“二”
  • 我希望能够在发出消息“三”之前取消计时器
  • 如何定义rxjs 5调度程序来实现这一点?

    根据您想要延迟的方式,您可以采取以下几种方法:

    延迟每次发射之间的给定时间 使用
    .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()
    之类的运算符来取消排放。那么,您能更具体地描述您的用例吗?我想安排从激活/订阅可观测对象开始的发射。调度程序应允许我在激活可观察对象后取消所有计划的事件,并对事件进行调度。因此,您有自己的自定义调度程序?如果没有可用的调度程序可以处理它,则是可能的重复