У меня есть поле ввода, которое просит пользователя ввести свое имя пользователя в моем расширении. Я хотел бы, чтобы когда пользователь нажимал esc или отменял, расширения прекращали работу.
Это то, что я пробовал до сих пор, но не повезло (похоже, что onCancellationRequested ожидает событие, а не метод..
await window.showInputBox(
{prompt: "UserName: ",
placeHolder: "UserName"},
{isCancellationRequested: true, onCancellationRequested: (cancelled)=> {throw new Error('cancelled')}})



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


CancellationToken не для этого. Это делает в значительной степени противоположное тому, что вы хотите, его можно использовать для отмены всплывающего окна ввода программно до того, как пользователь выполнит какой-либо ввод.
Если вы хотите узнать, отменил ли пользователь поле ввода, вам нужно проверить возвращаемое значение Thenable, как указано в showInputBox() документы:
The returned value will be undefined if the input box was canceled (e.g. pressing ESC). [...]
vscode.window.showInputBox({prompt: 'UserName', placeHolder: 'UserName'}).then(value => {
if (value === undefined) {
throw new Error('cancelled');
}
// handle valid values
});