给定一个包含消息有效负载和时间参数的对象数组,如下所示:
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工作。
答案 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>