首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我尝试更新vscode扩展中的诊断时,我遇到了一个问题

当我尝试更新vscode扩展中的诊断时,我遇到了一个问题
EN

Stack Overflow用户
提问于 2020-03-16 13:35:15
回答 1查看 207关注 0票数 0

我尝试在vscode扩展中更新诊断集合。我写的代码如下:

代码语言:javascript
复制
if (vscode.window.activeTextEditor) {
    updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}       

函数updateDiagnostics类似于:

代码语言:javascript
复制
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语句放在异步操作之后时,代码不能工作。

代码语言:javascript
复制
const respBody = await postRequest(uri,{name:"testcontraact1",contractcode:fileContent,limit:10});
if (vscode.window.activeTextEditor) {
   updateDiagnostics(vscode.window.activeTextEditor.document, diagnosticCollection);
}           

调试代码后,我发现函数updateDiagnostics已经执行了,但是在我的测试代码中没有显示诊断信息,这真的让我感到困惑。

EN

回答 1

Stack Overflow用户

发布于 2020-03-16 13:43:43

好了,我找到问题所在了。在执行postRequest之后,activeTextEditor.document就不同了。所以我试着这样做:

代码语言:javascript
复制
let dc = vscode.window.activeTextEditor?.document
const respBody = await postRequest(uri,{name:"testcontraact1",contractcode:fileContent,limit:10});
updateDiagnostics(dc, diagnosticCollection);

它成功了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60700797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档