我正在使用VScode扩展api。我有这样的商品。
const item = vscode.window.createStatusBarItem(
vscode.StatusBarAlignment.Right
);
它的命令被设置为以下
item.command = "codevids.record";
在点击时调用record()
函数
vscode.commands.registerCommand("codevids.record", () => record());
所有这些对我来说都很有意义。现在我正在处理记录函数中的逻辑,这样当再次单击它时,它会产生不同的效果,它通过状态栏字符串中的内容来确定这一点。
像这样
const record = () => {
if (item.text === `$(record) codevid` || item.text === `$(stop) codevid`) {
item.text = `$(pass) codevid`;
clearInterval(intervalID);
} else {
item.text = `$(record) codevid`;
必须有一种更合适的方法来处理以布尔方式点击的状态栏。我实际上想要点击播放,点击暂停,点击完成并运行不同的功能。
在这方面我有什么选择。
提前谢谢,如果你需要更多的细节,请告诉我。
我最终做了一个switch语句,也许有一种更vscode的方法来做这件事,而不是检查状态栏中的字符串,但目前有效。
const record = async () => {
console.log(item.text);
switch (item.text) {
case `$(device-camera-video) codevid`:
console.log("recording");
item.text = `$(record) codevid`;
break;
case `$(record) codevid`:
console.log("recording options");
const go = vscode.window
.showErrorMessage("Pause or Finish", "Pause", "Finish")
.then((selection) => {
if (selection === "Pause") {
item.text = `$(debug-pause) codevid`;
} else if (selection === "Finish") {
item.text = `$(pass) codevid`;
}
return selection;
});
console.log("go", await go);
break;
case `$(debug-pause) codevid`:
console.log("paused");
case `$(pass) codevid`:
console.log("finished");
default:
console.log("default");
}
```