我有一个输入框,要求用户在扩展名中输入其用户名。我希望当用户单击esc或取消扩展时停止运行。
这是我到目前为止尝试过的,但是没有运气(看来onCancellationRequested
在期待一个Event而不是一个方法。
await window.showInputBox(
{prompt: "UserName: ",
placeHolder: "UserName"},
{isCancellationRequested: true, onCancellationRequested: (cancelled)=> {throw new Error('cancelled')}})
答案 0 :(得分:1)
这不是CancellationToken
的用途。它的功能与您想要的相反,它可以用来在用户执行任何输入之前以编程方式取消输入弹出窗口 。
如果要确定用户是否已取消输入框,则需要检查showInputBox()
docs中提到的Thenable
的返回值:
如果取消输入框(例如按ESC),则返回的值将是不确定的。 [...]
vscode.window.showInputBox({prompt: 'UserName', placeHolder: 'UserName'}).then(value => {
if (value === undefined) {
throw new Error('cancelled');
}
// handle valid values
});