【发布时间】:2016-10-27 13:47:10
【问题描述】:
在 rxjs5 中,我正在尝试实现 Throttler 类。
import Rx from 'rxjs/rx';
export default class Throttler {
constructor(interval) {
this.timeouts = [];
this.incomingActions = new Rx.Subject();
this.incomingActions
.concatMap(action => Rx.Observable.just(action).delay(interval / 2))
.subscribe(action => action());
}
clear() {
// How do I do this?
}
do(action) {
this.incomingActions.next(action);
}
}
以下不变量必须成立:
传递给
do的每个动作都被添加到动作队列中动作队列按构造函数参数确定的固定间隔按顺序处理
可以使用
clear()清除操作队列。
如上所示,我当前的实现处理固定间隔,但我不知道如何清除队列。它还有一个问题,即使队列为空,所有操作都会延迟interval / 2ms。
附:我描述不变量的方式很容易映射到使用 setInterval 和数组作为队列的实现,但我想知道如何使用 Rx 来做到这一点。
【问题讨论】: