Electron.js ipc.sendSync 冻结
Electron.js ipc.sendSync Frezees
您好,我正在请求主进程的两个结果,但是当我单击按钮时,应用程序一直冻结。甚至 devtools 都不起作用。
Main.js
ipcMain.on('fmail', (event, arg) => {
var fmaile = even
var fmaila = arg
ipcMain.on('fpass', (event, arg) => {
var fpasse = event
var fpassa = arg
console.log(fpassa)
console.log(fmaila)
fmaile.returnValue = "info"
fpasse.returnValue = "info"
})
})
Javascript
var datamail = ipcRenderer.sendSync('fmail', "fmail");
var datapass = ipcRenderer.sendSync('fpass', "fpass");
console.log(datamail)
console.log(datapass)
感谢您的帮助。
docs 在这一点上非常清楚:
Sending a synchronous message will block the whole renderer process, unless you know what you are doing you should never use it.
由于您没有在 fmail
回调中提供 return 值,难怪它会阻止您的应用程序。
另外,我猜您想分别注册两个侦听器。您目前拥有的是 "add listener to 'fpass' every time 'fmail' is called back"
您的代码可能看起来像这样(但无法准确判断)
ipcMain.on('fmail', (event, arg) => {
console.log(arg)
event.returnValue = "info"
})
ipcMain.on('fpass', (event, arg) => {
console.log(arg)
event.returnValue = "info"
})
console.log(
ipcRenderer.sendSync('fmail', "fmail"),
ipcRenderer.sendSync('fpass', "fpass")
)
您好,我正在请求主进程的两个结果,但是当我单击按钮时,应用程序一直冻结。甚至 devtools 都不起作用。
Main.js
ipcMain.on('fmail', (event, arg) => {
var fmaile = even
var fmaila = arg
ipcMain.on('fpass', (event, arg) => {
var fpasse = event
var fpassa = arg
console.log(fpassa)
console.log(fmaila)
fmaile.returnValue = "info"
fpasse.returnValue = "info"
})
})
Javascript
var datamail = ipcRenderer.sendSync('fmail', "fmail");
var datapass = ipcRenderer.sendSync('fpass', "fpass");
console.log(datamail)
console.log(datapass)
感谢您的帮助。
docs 在这一点上非常清楚:
Sending a synchronous message will block the whole renderer process, unless you know what you are doing you should never use it.
由于您没有在 fmail
回调中提供 return 值,难怪它会阻止您的应用程序。
另外,我猜您想分别注册两个侦听器。您目前拥有的是 "add listener to 'fpass' every time 'fmail' is called back"
您的代码可能看起来像这样(但无法准确判断)
ipcMain.on('fmail', (event, arg) => {
console.log(arg)
event.returnValue = "info"
})
ipcMain.on('fpass', (event, arg) => {
console.log(arg)
event.returnValue = "info"
})
console.log(
ipcRenderer.sendSync('fmail', "fmail"),
ipcRenderer.sendSync('fpass', "fpass")
)