mirror of
https://github.com/Microsoft/vscode
synced 2024-10-12 22:37:41 +00:00
event: support initial buffer
This commit is contained in:
parent
906a01d077
commit
c826496a7c
|
@ -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);
|
||||
|
|
|
@ -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]);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
Loading…
Reference in a new issue