0

我有一堆事件,每个事件都必须在前一个事件之后触发,并具有特定于该事件的延迟。

Rx.Observable.interval提供了只提供一个区间的可能性。

有没有办法提供不同的间隔?

4

2 回答 2

1

解决方案是@NiklasFasching 提出的修改版本

   Rx.Observable.from(events)
     .concatMap(function(event) { 
        return Rx.Observable.timer(event.delay);
     })
     .subscribe(...)
于 2016-04-16T05:17:54.810 回答
0

generateWithRelativeTime运营商。官方文档在这里。简而言之,运算符允许您指定一个序列,您可以在发出每个值时对其进行调整。它类似于 for 循环,只是在您选择的时刻异步发出值。

例如,同步 for 循环:

for (i=1;i<4; i++) {do something}

可以变成一个以 100ms、200ms、300ms 分隔的值序列

// Generate a value with an absolute time with an offset of 100ms multipled by value
var source = Rx.Observable.generateWithRelativeTime(
    1, // initial value
    function (x) { return x < 4; }, // stop predicate
    function (x) { return x + 1; }, // iterator
    function (x) { return x; }, // value selector
    function (x) { return 100 * x; } // time selector
).timeInterval();

通过根据您的需要调整时间选择器,您可以使值之间的间隔发生变化。

于 2016-02-18T13:21:50.617 回答