Rxjs在特定迭代上增加了延迟

时间:2017-06-01 04:52:34

标签: rxjs5

我有一个数字流,例如每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

如何得到这个。

1 个答案:

答案 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, '>> '));