gpt4 book ai didi

visual-studio-code - 如何在 VS Code 扩展中等待构建任务?

转载 作者:行者123 更新时间:2023-12-03 14:00:12 27 4
gpt4 key购买 nike

let result = await vscode.commands.executeCommand('workbench.action.tasks.build');

立即解决。

如何使用 VS Code API 等待构建任务?

最佳答案

我想到了! 无法等待来自 vscode.tasks.executeTask 的任务,但我们可以等待 vscode.tasks.onDidEndTask并检查已结束的任务是否是我们的任务。

async function executeBuildTask(task: vscode.Task) {
const execution = await vscode.tasks.executeTask(task);

return new Promise<void>(resolve => {
let disposable = vscode.tasks.onDidEndTask(e => {
if (e.execution.task.group === vscode.TaskGroup.Build) {
disposable.dispose();
resolve();
}
});
});
}

async function getBuildTasks() {
return new Promise<vscode.Task[]>(resolve => {
vscode.tasks.fetchTasks().then((tasks) => {
resolve(tasks.filter((task) => task.group === vscode.TaskGroup.Build));
});
});
}

export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand('extension.helloWorld', async () => {
const buildTasks = await getBuildTasks();
await executeBuildTask(buildTasks[0]);
}));
}

请注意,当前有一个 bug #96643 ,这阻止了我们对 vscode.Task 对象进行比较: if (e.execution.task === execution.task) { ... }

关于visual-studio-code - 如何在 VS Code 扩展中等待构建任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61428928/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com