Visual studio code 我在尝试更新vscode扩展中的诊断时遇到问题
我尝试在vscode扩展中更新diagnostics集合。我这样写代码:Visual studio code 我在尝试更新vscode扩展中的诊断时遇到问题,visual-studio-code,vscode-extensions,diagnostics,Visual Studio Code,Vscode Extensions,Diagnostics,我尝试在vscode扩展中更新diagnostics集合。我这样写代码: if(vscode.window.activeTextEditor){ updateDiagnostics(vscode.window.activeTextEditor.document,diagnosticCollection); } 函数updateDiagnostics类似于: 函数更新诊断(文档:vscode.TextDocument,集合:vscode.DiagnosticCollection):
if(vscode.window.activeTextEditor){
updateDiagnostics(vscode.window.activeTextEditor.document,diagnosticCollection);
}
函数updateDiagnostics
类似于:
函数更新诊断(文档:vscode.TextDocument,集合:vscode.DiagnosticCollection):无效{
let diagnostics:vscode.diagnostics[]=[];
如果(文件){
let message=`error message`;
让范围=新的vscode.range(新的vscode.Position(3,4),新的vscode.Position(3,5))
让严重性=vscode.DiagnosticSeverity.Error
let diagnostic=新vscode.diagnostic(范围、消息、严重性);
诊断。推送(诊断);
collection.set(document.uri,diagnostics)
}否则{
collection.clear();
}
}
这段代码是有效的,但是当我将if
语句放在如下异步操作之后,代码就不起作用了
const respBody=wait postRequest(uri,{name:“TestContract1”,contractcode:fileContent,limit:10});
if(vscode.window.activeTextEditor){
updateDiagnostics(vscode.window.activeTextEditor.document,diagnosticCollection);
}
调试代码后,我发现函数
updateDiagnostics
已经执行,但测试代码中没有显示诊断信息,这让我非常困惑。好的,我发现了问题。执行postRequest
后,activeTextEditor.document
已不同。所以我试着这样做:
let dc=vscode.window.activeTextEditor?.document
const respBody=wait postRequest(uri,{name:“TestContract1”,合同代码:fileContent,限制:10});
更新诊断学(dc,诊断集合);
成功了