VScode扩展将取消事件添加到showInputBox

时间:2019-07-16 10:04:24

标签: javascript typescript visual-studio-code vscode-extensions

我有一个输入框,要求用户在扩展名中输入其用户名。我希望当用户单击esc或取消扩展时停止运行。

这是我到目前为止尝试过的,但是没有运气(看来onCancellationRequested在期待一个Event而不是一个方法。

await window.showInputBox(
{prompt: "UserName: ",
    placeHolder: "UserName"}, 
{isCancellationRequested: true, onCancellationRequested: (cancelled)=> {throw new Error('cancelled')}})

1 个答案:

答案 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
});