【问题标题】:Buffer/Ignore events until period of inactivity then fire only last event缓冲/忽略事件,直到不活动期间,然后仅触发最后一个事件
【发布时间】:2010-11-22 12:49:11
【问题描述】:

我有一个可观察的,当它触发时会显示一条消息。延迟后,我想淡出该消息,除非同时该 observable 再次触发。

换句话说,给定一个 observable,我想创建另一个 observable,这样当最后一个事件触发时,第一个 observable 超过指定时间之前创建的 observable 触发最后一个事件。

【问题讨论】:

    标签: javascript events reactive-extensions-js


    【解决方案1】:

    鉴于可观察到的o,以下代码可以满足我的要求:

    var d = o
        .DistinctUntilChanged()
        .Timestamp()
        .Select(function(e) { return e.Timestamp; })
        .Publish();
    d.CombineLatest(d.Delay(2000), function(a, b) { return a === b; })
        .Where(function(o) { return o; })
        .Subscribe(function(v) { /* ... do something with v ... */ });
    d.Connect();
    

    这会创建一个可观察的 d,它将在 o 不活动 2000 毫秒后触发。

    注意:订阅函数中v的值始终为true

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      • 1970-01-01
      相关资源
      最近更新 更多