复制
收藏
提问
简洁
electron: does "menu.popup()" returns promise? code example to use "await menu.popup()" to get the clicked index of menuitems
1个月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
菜单弹出函数是否返回Promise
使用await获取菜单项点击索引
尽管menu.popup()
不返回Promise,但可以通过设置事件监听器来实现类似效果。以下是使用await
获取菜单项点击索引的代码示例:
const { Menu, MenuItem } = require('electron');
// 创建菜单和菜单项
const menu = new Menu();
menu.append(new MenuItem({ label: 'Item 1', click: () => console.log('Item 1 clicked') }));
menu.append(new MenuItem({ label: 'Item 2', click: () => console.log('Item 2 clicked') }));
// 弹出菜单并等待用户选择
async function showMenu() {
const window = ...; // 获取当前聚焦的窗口
menu.popup({ window });
// 监听菜单项点击事件,返回点击的菜单项索引
return new Promise(resolve => {
menu.on('menu-item-click', (event, item) => {
resolve(item);
});
});
}
// 使用await调用showMenu并获取点击的菜单项
(async () => {
const clickedItem = await showMenu();
console.log(`Clicked item index: ${clickedItem.index}`); // 输出点击的菜单项索引
})();
在这个示例中,我们首先创建了一个菜单并添加了两个菜单项。然后定义了一个showMenu
函数,它使用menu.popup()
弹出菜单,并监听menu-item-click
事件来获取用户点击的菜单项。通过返回一个Promise,我们可以在外部使用await
等待用户的选择,并获取点击的菜单项索引。9
你觉得结果怎么样?