event: support initial buffer

This commit is contained in:
Joao Moreno 2016-09-16 12:18:39 +02:00
parent 906a01d077
commit c826496a7c
2 changed files with 18 additions and 2 deletions

View file

@ -375,8 +375,9 @@ export function stopwatch<T>(event: Event<T>): Event<number> {
* // 4
* ```
*/
export function buffer<T>(event: Event<T>, nextTick = false): Event<T> {
let buffer: T[] = [];
export function buffer<T>(event: Event<T>, nextTick = false, buffer: T[] = []): Event<T> {
buffer = buffer.slice();
let listener = event(e => {
if (buffer) {
buffer.push(e);

View file

@ -402,6 +402,21 @@ suite('Event utils', () => {
assert.deepEqual(result, [1,2,3,4]);
});
});
test('should fire initial buffer events', () => {
const result = [];
const emitter = new Emitter<number>();
const event = emitter.event;
const bufferedEvent = buffer(event, false, [-2, -1, 0]);
emitter.fire(1);
emitter.fire(2);
emitter.fire(3);
assert.deepEqual(result, []);
bufferedEvent(num => result.push(num));
assert.deepEqual(result, [-2,-1,0,1,2,3]);
});
});
});