Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio code 我在尝试更新vscode扩展中的诊断时遇到问题_Visual Studio Code_Vscode Extensions_Diagnostics - Fatal编程技术网

Visual studio code 我在尝试更新vscode扩展中的诊断时遇到问题

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):

我尝试在vscode扩展中更新diagnostics集合。我这样写代码:

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,诊断集合);
成功了