本文整理汇总了TypeScript中vs/base/common/lifecycle.IDisposable类的典型用法代码示例。如果您正苦于以下问题:TypeScript IDisposable类的具体用法?TypeScript IDisposable怎么用?TypeScript IDisposable使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IDisposable类的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: TimeoutTimer
return new Promise<string>((resolve, reject) => {
let listener: IDisposable | null = null;
let timeout: TimeoutTimer | null = null;
const execute = () => {
if (listener) {
listener.dispose();
listener = null;
}
if (timeout) {
timeout.dispose();
timeout = null;
}
const tokenizationSupport = TokenizationRegistry.get(language!);
if (tokenizationSupport) {
_colorize(lines, tabSize, tokenizationSupport).then(resolve, reject);
return;
}
resolve(_fakeColorize(lines, tabSize));
};
// wait 500ms for mode to load, then give up
timeout = new TimeoutTimer();
timeout.cancelAndSet(execute, 500);
listener = TokenizationRegistry.onDidChange((e) => {
if (e.changedLanguages.indexOf(language!) >= 0) {
execute();
}
});
});
示例2: event
export function debounceEvent<I, O>(event: Event<I>, merger: (last: O, event: I) => O, delay: number = 100, leading = false): { clear: () => void; event: Event<O> } {
let subscription: IDisposable;
let output: O = undefined;
let handle: any = undefined;
let numDebouncedCalls = 0;
const clear = () => output = undefined;
const emitter = new Emitter<O>({
onFirstListenerAdd() {
subscription = event(cur => {
numDebouncedCalls++;
output = merger(output, cur);
if (leading && !handle) {
emitter.fire(output);
}
clearTimeout(handle);
handle = setTimeout(() => {
let _output = output;
output = undefined;
handle = undefined;
if (!leading || numDebouncedCalls > 1) {
emitter.fire(_output);
}
numDebouncedCalls = 0;
}, delay);
});
},
onLastListenerRemove() {
subscription.dispose();
}
});
return {
event: emitter.event,
clear
};
}
示例3: dispose
public dispose(): void {
this._modelOptionsListener.dispose();
this._configChangeListener.dispose();
this.model._removeMarker(this._selStartMarker);
this.model._removeMarker(this._selEndMarker);
this.bracketDecorations = this.model.deltaDecorations(this.bracketDecorations, [], this.editorId);
}
示例4: dispose
public dispose(): void {
this._isDisposed = true;
if (this.handleAccumulatedModelEventsTimeout !== -1) {
clearTimeout(this.handleAccumulatedModelEventsTimeout);
this.handleAccumulatedModelEventsTimeout = -1;
}
if (this._renderAnimationFrame !== null) {
this._renderAnimationFrame.dispose();
this._renderAnimationFrame = null;
}
this.accumulatedModelEvents = [];
this.eventDispatcher.removeEventHandler(this);
this.outgoingEvents.dispose();
this.listenersToRemove = dispose(this.listenersToRemove);
this.listenersToDispose = dispose(this.listenersToDispose);
this.keyboardHandler.dispose();
this.pointerHandler.dispose();
this.viewLines.dispose();
// Destroy view parts
for (let i = 0, len = this.viewParts.length; i < len; i++) {
this.viewParts[i].dispose();
}
this.viewParts = [];
this.layoutProvider.dispose();
}
示例5:
return TPromise.join([TPromise.timeout(20)].concat(fixes)).then(_ => {
reg.dispose();
oracle.dispose();
// assert marker
assert.deepEqual(range, { startLineNumber: 1, startColumn: 1, endLineNumber: 1, endColumn: 6 });
});
示例6: _leaveChordMode
private _leaveChordMode(): void {
if (this._currentChordStatusMessage) {
this._currentChordStatusMessage.dispose();
this._currentChordStatusMessage = null;
}
this._currentChordChecker.cancel();
this._currentChord = null;
}
示例7: dispose
public dispose() {
if (this.actionBar) {
this.actionBar.dispose();
this.actionBar = null;
}
if (this.listener) {
this.listener.dispose();
this.listener = null;
}
}
示例8: TPromise
test('Lightbulb is in the wrong place, #29933', async function () {
let reg = CodeActionProviderRegistry.register(languageIdentifier.language, {
provideCodeActions(doc, _range) {
return [];
}
});
editor.getModel().setValue('// @ts-check\n2\ncon\n');
markerService.changeOne('fake', uri, [{
startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4,
message: 'error',
severity: 1,
code: '',
source: ''
}]);
// case 1 - drag selection over multiple lines -> range of enclosed marker, position or marker
await new TPromise(resolve => {
let oracle = new QuickFixOracle(editor, markerService, e => {
assert.equal(e.type, 'auto');
assert.deepEqual(e.range, { startLineNumber: 3, startColumn: 1, endLineNumber: 3, endColumn: 4 });
assert.deepEqual(e.position, { lineNumber: 3, column: 1 });
oracle.dispose();
resolve(null);
}, 5);
editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 });
});
// // case 2 - selection over multiple lines & manual trigger -> lightbulb
// await new TPromise(resolve => {
// editor.setSelection({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 });
// let oracle = new QuickFixOracle(editor, markerService, e => {
// assert.equal(e.type, 'manual');
// assert.ok(e.range.equalsRange({ startLineNumber: 1, startColumn: 1, endLineNumber: 4, endColumn: 1 }));
// oracle.dispose();
// resolve(null);
// }, 5);
// oracle.trigger('manual');
// });
reg.dispose();
});
示例9: dispose
public dispose(): void {
this._onTitleAreaUpdate.dispose();
this._onDidFocus.dispose();
if (this._focusTracker) {
this._focusTracker.dispose();
}
if (this._focusListenerDisposable) {
this._focusListenerDisposable.dispose();
}
super.dispose();
}
示例10: resolve
const execute = () => {
if (listener) {
listener.dispose();
listener = null;
}
if (timeout) {
timeout.dispose();
timeout = null;
}
const tokenizationSupport = TokenizationRegistry.get(language!);
if (tokenizationSupport) {
return resolve(_colorize(lines, tabSize, tokenizationSupport));
}
return resolve(_fakeColorize(lines, tabSize));
};