我刚开始学习 vscode 扩展,我想知道是否有一种简单的方法可以以编程方式关闭通过vscode.window.showInformationMessage()
. 如果你想重现,我从这里的 WordCount 演示开始,在复制/粘贴 的正文后extension.ts
,如教程中所述,我做了一些修改,activate()
如下所示......
export function activate(context: ExtensionContext) {
let wordCounter = new WordCounter();
let wcTimeout = null;
let setWCTimeout = function() {
clearWCTimeout();
wcTimeout = setTimeout(clearWCTimeout, 1000);
};
let clearWCTimeout = function() {
if (wcTimeout !== null) {
clearTimeout(wcTimeout);
wcTimeout = null;
// clear/hide the message box here, but how?
}
};
let disposable = commands.registerCommand('extension.sayHello', () => {
wordCounter.updateWordCount();
setWCTimeout();
vscode.window
.showInformationMessage(wordCounter._getWordCount(window.activeTextEditor.document).toString())
.then(clearWCTimeout);
});
// Add to a list of disposables which are disposed when this extension is deactivated.
context.subscriptions.push(wordCounter);
context.subscriptions.push(wcTimeout);
context.subscriptions.push(disposable);
}
我尝试过或考虑过的:
vscode.window.showInformationMessage()
用空字符串和空字符串调用null
- 什么都不做,除了null
|空字符串之外的任何东西都会导致出现一个新的信息消息框- 处理命令 - 真的没有任何理由认为这会起作用,并且该命令必须重新注册才能再次起作用
- 试图访问 DOM 以简单地找到“关闭”按钮并触发点击它 - 但没有找到任何类型的操作 DOM 的入口点
旁注:我对这种范式中的最佳实践感兴趣。例如,是否有一个流行的节点库可以包装我可能要考虑使用的 js 计时器?但是,这不是我对这篇文章的主要关注。如果您要评论延迟机制setTimeout()/clearTimeout()
( .