electron - 如何判断消息是来自主进程中的 send 还是 sendSync?
问题描述
在主进程中,ipcMain.on 收到的消息是来自send
还是sendSync
?
ipcMain.on('eventName', (event, arg) => {
if ( /* ??? */ ) {
event.sender.send('AsyncEventName', arg)
} else {
event.returnValue = arg
}
})
解决方案
您可以只传入一个值send
来进行区分:
ipcRenderer.send("eventName", myArg, true);
ipcRenderer.sendSync("eventName", myArg, false);
然后在您的主代码中:
ipcMain.on('eventName', (event, arg, isAsync) => {
if (isAsync) {
event.sender.send('AsyncEventName', arg)
} else {
event.returnValue = arg
}
});
另一种选择是使用两个不同的渠道:
ipcRenderer.send("eventName", myArg);
ipcRenderer.sendSync("eventNameSync", myArg);
然后在您的主代码中:
ipcMain.on('eventName', (event, arg) => {
event.sender.send('AsyncEventName', arg)
});
ipcMain.on('eventNameSync', (event, arg) => {
event.returnValue = arg
});
就个人而言,我更喜欢第二种。
推荐阅读
- perl - 在 KOMODO 调试器中停止、步入、跳过和退出
- c# - 正则表达式检查句子中仅包含字母的两个单词
- c# - Xamarin Firestore 在经过一定时间后引发 TimeoutException
- javascript - 如何将数据从 Flask 发送到 JavaScript?
- arrays - Flutter - 将数组添加到小部件列表
- windows - 即使在窗口模式下,D3D9 Present 也会返回 D3DERR_DEVCELOST(!)
- enterprise-architect - 如何在 Sparx EA 中重用状态
- javascript - React Router 中的链接未重定向到页面
- javascript - 使用 Twilio 向多个 whatsapp 用户发送警报消息?
- python - Sqlite3 使用用户输入按列搜索