我有一个数字流,例如每250毫秒后发出1到10个数字。
1 -(250ms)- 2 -(250ms)- 3 -(250ms)- 4 -(250ms)- 5 -(250ms)- 6 and so on..
Rx.Observable.from([1, 2, 3, 4, 5])
.zip(Rx.Observable.timer(0, 25), x => x)
.subscribe(x => console.log(x));
我想在每3个项目后添加一个额外的延迟。即3,6,9
1 -(250ms)- 2 -(250ms)- 3 -(2000ms)- 4 -(250ms)- 5 -(250ms)-
6 -(2000ms) - 7 -(250ms)- 8 -(250ms)- 9 -(2000ms)- 10
如何得到这个。
答案 0 :(得分:0)
首先,您可以使用.range()
运算符。然后,您可以使用.flatMap()
:
var s = Rx.Observable.range(1,8);
s1 = s.flatMap(v => {
var delay = v * 250 + Math.floor(v / 3) * 1750;
console.log('delay for ', v, ' = ', delay);
return Rx.Observable.of(v).delay(delay);
});
s1.subscribe(console.log.bind(console, '>> '));