【发布时间】:2018-02-07 18:23:53
【问题描述】:
我有 4 种不同类型的事件,我使用 Observable.fromEvent(object, 'type1') 转换为 observable。它们触发的事件有以下组合。
- 仅类型 1。
- 类型1,类型2
- 类型1,类型3
- type1,type4,
- type2,type1,type3
- type3,type4,type1
因为没有直接的模式。我使用了合并和缓冲时间。如下所示对事件进行采样。
const e1 = Observable.fromEvent(ob1, 'type1');
const e2 = Observable.fromEvent(ob1, 'type2');
const e3 = Observable.fromEvent(ob1, 'type3');
const e4 = Observable.fromEvent(ob1, 'type4');
const merged = merge(e1, e2, e3, e4);
const sampled = merged.bufferTime(500);
sampled.subscribe(e=>console.log(e));
虽然上面的代码有效,但是每个.5s 都会发出数据,如果没有事件,则发出空数据。我尝试使用buffer,但在RXJS 5+ 中,缓冲区只有closingselector 功能。
如何使用可观察对象,使计时器从空缓冲区开始并结束 x+.5 秒,而不是每 0.5 秒采样一次。
【问题讨论】:
-
你能更清楚地解释你想要的行为吗?理想情况下,使用大理石图。
标签: typescript rxjs rxjs5