Convert promise chains to async/await

This commit is contained in:
Remco Haszing 2021-08-19 17:55:46 +02:00
parent 57e820ed0c
commit ba395c9d23
No known key found for this signature in database
GPG key ID: 40D9F5FE9155FD3C
2 changed files with 81 additions and 103 deletions

View file

@ -55,26 +55,19 @@ export function createDiagnosticsAdapter(
let disposables: IDisposable[] = []; let disposables: IDisposable[] = [];
const listeners: Record<string, IDisposable> = Object.create(null); const listeners: Record<string, IDisposable> = Object.create(null);
const resetSchema = (resource: Uri): void => { const resetSchema = async (resource: Uri): Promise<void> => {
getWorker().then((worker) => { const worker = await getWorker();
worker.resetSchema(String(resource)); worker.resetSchema(String(resource));
});
}; };
const doValidate = (resource: Uri, languageId: string): void => { const doValidate = async (resource: Uri, languageId: string): Promise<void> => {
getWorker(resource) const worker = await getWorker(resource);
.then((worker) => const diagnostics = await worker.doValidation(String(resource));
worker.doValidation(String(resource)).then((diagnostics) => {
const markers = diagnostics.map((d) => toDiagnostics(resource, d)); const markers = diagnostics.map((d) => toDiagnostics(resource, d));
const model = editor.getModel(resource); const model = editor.getModel(resource);
if (model.getModeId() === languageId) { if (model.getModeId() === languageId) {
editor.setModelMarkers(model, languageId, markers); editor.setModelMarkers(model, languageId, markers);
} }
}),
)
.then(undefined, (err) => {
console.error(err);
});
}; };
const onModelAdd = (model: editor.IModel): void => { const onModelAdd = (model: editor.IModel): void => {
@ -223,15 +216,11 @@ export function createCompletionItemProvider(
return { return {
triggerCharacters: [' ', ':'], triggerCharacters: [' ', ':'],
provideCompletionItems( async provideCompletionItems(model, position) {
model: editor.IReadOnlyModel,
position: Position,
): PromiseLike<languages.CompletionList> {
const resource = model.uri; const resource = model.uri;
return getWorker(resource) const worker = await getWorker(resource);
.then((worker) => worker.doComplete(String(resource), fromPosition(position))) const info = await worker.doComplete(String(resource), fromPosition(position));
.then((info) => {
if (!info) { if (!info) {
return; return;
} }
@ -271,10 +260,9 @@ export function createCompletionItemProvider(
}); });
return { return {
isIncomplete: info.isIncomplete, incomplete: info.isIncomplete,
suggestions: items, suggestions: items,
}; };
});
}, },
}; };
} }
@ -319,20 +307,18 @@ function toMarkedStringArray(
export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider { export function createHoverProvider(getWorker: WorkerAccessor): languages.HoverProvider {
return { return {
provideHover(model, position) { async provideHover(model, position) {
const resource = model.uri; const resource = model.uri;
return getWorker(resource) const worker = await getWorker(resource);
.then((worker) => worker.doHover(String(resource), fromPosition(position))) const info = await worker.doHover(String(resource), fromPosition(position));
.then((info) => {
if (!info) { if (!info) {
return; return;
} }
return { return {
range: toRange(info.range), range: toRange(info.range),
contents: toMarkedStringArray(info.contents), contents: toMarkedStringArray(info.contents),
} as languages.Hover; };
});
}, },
}; };
} }
@ -400,17 +386,15 @@ export function createDocumentSymbolProvider(
getWorker: WorkerAccessor, getWorker: WorkerAccessor,
): languages.DocumentSymbolProvider { ): languages.DocumentSymbolProvider {
return { return {
provideDocumentSymbols(model) { async provideDocumentSymbols(model) {
const resource = model.uri; const resource = model.uri;
return getWorker(resource) const worker = await getWorker(resource);
.then((worker) => worker.findDocumentSymbols(String(resource))) const items = await worker.findDocumentSymbols(String(resource));
.then((items) => {
if (!items) { if (!items) {
return; return;
} }
return items.map((item) => toDocumentSymbol(item)); return items.map((item) => toDocumentSymbol(item));
});
}, },
}; };
} }
@ -429,17 +413,15 @@ export function createDocumentFormattingEditProvider(
getWorker: WorkerAccessor, getWorker: WorkerAccessor,
): languages.DocumentFormattingEditProvider { ): languages.DocumentFormattingEditProvider {
return { return {
provideDocumentFormattingEdits(model, options) { async provideDocumentFormattingEdits(model, options) {
const resource = model.uri; const resource = model.uri;
return getWorker(resource).then((worker) => const worker = await getWorker(resource);
worker.format(String(resource), fromFormattingOptions(options)).then((edits) => { const edits = await worker.format(String(resource), fromFormattingOptions(options));
if (!edits || edits.length === 0) { if (!edits || edits.length === 0) {
return; return;
} }
return edits.map(toTextEdit); return edits.map(toTextEdit);
}),
);
}, },
}; };
} }

View file

@ -69,14 +69,10 @@ export function createWorkerManager(
stopWorker(); stopWorker();
}, },
getLanguageServiceWorker(...resources) { async getLanguageServiceWorker(...resources) {
let _client: YAMLWorker; const client = await getClient();
return getClient() await worker.withSyncedResources(resources);
.then((client) => { return client;
_client = client;
})
.then(() => worker.withSyncedResources(resources))
.then(() => _client);
}, },
}; };
} }