在RxJS中生成具有数据驱动延迟的值流

时间:2017-01-12 08:47:53

标签: rxjs rxjs5

给定一个包含消息有效负载和时间参数的对象数组,如下所示:

var data = [ { message:"Deliver me after 1000ms", time:1000 }, { message:"Deliver me after 2000ms", time:2000 }, { message:"Deliver me after 3000ms", time:3000 } ];

我想创建一个可观察的序列,它返回数组中每个元素的消息部分,然后等待对象中指定的相应时间量。如果有必要,我可以重新组织数组的数据结构。

我已经看过Observable.delay,但无法通过这种方式看到它如何与动态值一起使用。我在RxJS 5工作。

1 个答案:

答案 0 :(得分:2)

您可以使用delayWhen

var data = [
    { message:"Deliver me after 1000ms", time:1000 },
    { message:"Deliver me after 2000ms", time:2000 },
    { message:"Deliver me after 3000ms", time:3000 }
];

Rx.Observable
  .from(data)
  .delayWhen(datum => Rx.Observable.timer(datum.time))
  .do(datum => console.log(datum.message))
  .subscribe();
<script src="https://unpkg.com/@reactivex/rxjs@5.0.3/dist/global/Rx.js"></script>