加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

RXJS:聚合辩护

发布时间:2020-12-14 00:51:43 所属栏目:百科 来源:网络整理
导读:我的用例如下:我得到的事件有时会爆发.如果发生爆发,我只需要处理一次.去抖动就是这样. 然而,debounce只给了我一个爆发的最后一个元素,但我需要知道一个爆发中的所有元素聚合在它们上面(使用flatmap). 这可以通过定时窗口或缓冲区来完成,但是,这些是固定间
我的用例如下:我得到的事件有时会爆发.如果发生爆发,我只需要处理一次.去抖动就是这样.

然而,debounce只给了我一个爆发的最后一个元素,但我需要知道一个爆发中的所有元素聚合在它们上面(使用flatmap).

这可以通过定时窗口或缓冲区来完成,但是,这些是固定间隔,因此缓冲区/窗口超时可能发生在突发中间,因此将突发分成2个部分而不是1.

所以我想要的是类似的东西

.
.
event: a
.
. -> a
.
.
.
.
.
.event: b
.event: c
.event: d
.
.-> b,c,d
. 
.
.
.
.event : e
.
. -> e
.
这可以通过将debounced流作为关闭选择器传递到 buffer来实现,例如:
var s = Rx.Observable.of('a')
  .merge(Rx.Observable.of('b').delay(100))
  .merge(Rx.Observable.of('c').delay(150))
  .merge(Rx.Observable.of('d').delay(200))
  .merge(Rx.Observable.of('e').delay(300))
  .share()
;

s.buffer(s.debounce(75)).subscribe(x => console.log(x));

这是一个可运行的版本:https://jsbin.com/wusasi/edit?js,output

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读