【问题标题】:Timestamp in RxJS 5.0RxJS 5.0 中的时间戳
【发布时间】:2016-03-14 05:59:04
【问题描述】:

在 RxJS 4.0 中,我可以执行以下操作:

let clicks = Observable.fromEvent(board.canvas, 'click'),
    keydowns = Observable.fromEvent(document, 'keydown')
      .filter((e) => e.keyCode === 32);
  return Observable
    .merge(clicks, keydowns)
    .sample(200).
    .timestamp();

Now that RxJS 5.0 dropped support for timestamp,这一段代码在迁移过程中如何完成?

【问题讨论】:

    标签: rxjs5


    【解决方案1】:

    对于未来的读者 - .timestamp() 已在 RxJS 5.0 中重新实现(在 beta.4 (2016-03-29) 中)。

    更新日志:https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md

    【讨论】:

      【解决方案2】:

      我们可以很容易地通过映射一些源 Observable 来重新创建这种行为:

      function timestamp(source) {
          return source.map(value => ({ value, timestamp: Date.now() }));
      }
      

      在你的代码中:

      let clicks = Observable.fromEvent(board.canvas, 'click');
      let keydowns = Observable.fromEvent(document, 'keydown')
            .filter((e) => e.keyCode === 32);
      
      let clicksAndKeydowns = Observable
          .merge(clicks, keydowns)
          .sample(200);
      
      return timestamp(clicksAndKeydowns);
      

      【讨论】:

        猜你喜欢
        • 2016-06-29
        • 2023-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-15
        • 2011-10-01
        • 2020-04-08
        • 1970-01-01
        相关资源
        最近更新 更多