Electron 如何判断邮件是来自主进程中的send还是sendSync?

Electron 如何判断邮件是来自主进程中的send还是sendSync?,electron,Electron,在主进程中,ipcMain.on收到的消息来自send或sendSync ipcMain.on('eventName',(event,arg)=>{ 如果(/*???*/){ event.sender.send('AsyncEventName',arg) }否则{ event.returnValue=arg } }) 您只需将一个值传入send即可进行区分: ipcRenderer.send("eventName", myArg, true); ipcRenderer.sendSync("eve

在主进程中,ipcMain.on收到的消息来自
send
sendSync

ipcMain.on('eventName',(event,arg)=>{
如果(/*???*/){
event.sender.send('AsyncEventName',arg)
}否则{
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
    }
});
ipcMain.on('eventName', (event, arg) => {
    event.sender.send('AsyncEventName', arg)
});
ipcMain.on('eventNameSync', (event, arg) => {
    event.returnValue = arg
});

另一个选项是使用两个不同的频道:

ipcRenderer.send("eventName", myArg);
ipcRenderer.sendSync("eventNameSync", myArg);
然后在主代码中:

ipcMain.on('eventName', (event, arg, isAsync) => {
    if (isAsync) {
        event.sender.send('AsyncEventName', arg)
    } else {
        event.returnValue = arg
    }
});
ipcMain.on('eventName', (event, arg) => {
    event.sender.send('AsyncEventName', arg)
});
ipcMain.on('eventNameSync', (event, arg) => {
    event.returnValue = arg
});

就个人而言,我更喜欢第二个。

您可以使用不同的事件通道进行异步和同步,如中所示。你有不允许你这样做的限制吗?如果是,如果你将它们添加到你的问题中,你会得到更好的答案。我想知道
ipcMain中
事件
之间的区别。通过
send
sendSync
,或者它们是相同的?好吧,
ipcMain
接受
Electron.event
类型的事件(假设你使用的是TypeScript)不管它叫什么。它被描述了,看起来它们是一样的。它们只有一个
sender
和一个
returnValue
属性。