【问题标题】:Rxjs add delay on specific iterationRxjs 在特定迭代中添加延迟
【发布时间】:2017-06-01 04:52:34
【问题描述】:

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

如何获得。

【问题讨论】:

    标签: rxjs5


    【解决方案1】:

    首先,您可以使用.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, '>> '));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      相关资源
      最近更新 更多