Я пытаюсь обновить коллекцию диагностики в расширении vscode. Я написал код следующим образом:
if (vscode.window.activeTextEditor) {
updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}
Функция updateDiagnostics
имеет вид:
function updateDiagnostics(document: vscode.TextDocument, collection: vscode.DiagnosticCollection): void {
let diagnostics: vscode.Diagnostic[] = [];
if (document) {
let message = `error message`;
let range = new vscode.Range(new vscode.Position(3,4), new vscode.Position(3,5))
let severity = vscode.DiagnosticSeverity.Error
let diagnostic = new vscode.Diagnostic(range, message, severity);
diagnostics.push(diagnostic);
collection.set(document.uri, diagnostics)
} else {
collection.clear();
}
}
Этот код работает, однако, когда я ставлю оператор if
после асинхронного c операция, подобная следующей, код не работает.
const respBody = await postRequest(uri,{name:"testcontraact1",contractcode:fileContent,limit:10});
if (vscode.window.activeTextEditor) {
updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}
После отладки кода я обнаружил, что функция updateDiagnostics
была выполнена, но в моем тестовом коде не отображается информация о диагностике c, которая действительно смутила меня.