在 RxJS 中生成具有数据驱动延迟的值流
Produce a stream of values with data-driven delays in RxJS
给定一个包含消息有效负载和时间参数的对象数组,如下所示:
var data = [
{ message:"Deliver me after 1000ms", time:1000 },
{ message:"Deliver me after 2000ms", time:2000 },
{ message:"Deliver me after 3000ms", time:3000 }
];
我想创建一个可观察序列,其中 returns 数组每个元素的消息部分,然后等待对象中指定的相应时间量。如果有必要,我愿意重组数组的数据结构。
我见过 Observable.delay 但看不出它如何以这种方式与动态值一起使用。我在 RxJS 5 中工作。
您可以使用 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>
给定一个包含消息有效负载和时间参数的对象数组,如下所示:
var data = [
{ message:"Deliver me after 1000ms", time:1000 },
{ message:"Deliver me after 2000ms", time:2000 },
{ message:"Deliver me after 3000ms", time:3000 }
];
我想创建一个可观察序列,其中 returns 数组每个元素的消息部分,然后等待对象中指定的相应时间量。如果有必要,我愿意重组数组的数据结构。
我见过 Observable.delay 但看不出它如何以这种方式与动态值一起使用。我在 RxJS 5 中工作。
您可以使用 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>