提交 a7dfddeb 编写于 作者: J Johannes Rieken 提交者: GitHub

Merge pull request #9186 from f111fei/patch-15

Fix debounceEvent
......@@ -199,8 +199,9 @@ export function debounceEvent<I, O>(event: Event<I>, merger: (last: O, event: I)
output = merger(output, cur);
clearTimeout(handle);
handle = setTimeout(() => {
emitter.fire(output);
let _output = output;
output = undefined;
emitter.fire(_output);
}, delay);
});
},
......@@ -262,4 +263,4 @@ export class EventBufferer {
this.buffers.pop();
buffer.forEach(flush => flush());
}
}
\ No newline at end of file
}
......@@ -5,7 +5,7 @@
'use strict';
import * as assert from 'assert';
import Event, {Emitter, fromEventEmitter, EventBufferer} from 'vs/base/common/event';
import Event, {Emitter, fromEventEmitter, debounceEvent, EventBufferer} from 'vs/base/common/event';
import {IDisposable} from 'vs/base/common/lifecycle';
import {EventEmitter} from 'vs/base/common/eventEmitter';
import Errors = require('vs/base/common/errors');
......@@ -177,6 +177,37 @@ suite('Event',function(){
Errors.setUnexpectedErrorHandler(origErrorHandler);
}
});
test('Debounce Event', function (done: () => void) {
let doc = new Samples.Document3();
let onDocDidChange = debounceEvent(doc.onDidChange, (prev: string[], cur) => {
if (!prev) {
prev = [cur];
} else if (prev.indexOf(cur) < 0) {
prev.push(cur);
}
return prev;
}, 10);
let count = 0;
onDocDidChange(keys => {
count++;
assert.ok(keys, 'was not expecting keys.');
if (count === 1) {
doc.setText('4');
assert.deepEqual(keys, ['1', '2', '3']);
} else if (count === 2){
assert.deepEqual(keys, ['4']);
done();
}
});
doc.setText('1');
doc.setText('2');
doc.setText('3');
});
});
suite('EventBufferer', () => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册