javascript - Electron.js ipc.sendSync 冻结
问题描述
嗨,我从主进程请求两个结果,但是当我单击按钮时,应用程序一直冻结。甚至 devtools 也无法正常工作。
主.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)
感谢帮助。
解决方案
文档对此非常清楚:
发送同步消息将阻塞整个渲染器进程,除非您知道自己在做什么,否则永远不要使用它。
由于您没有在fmail
回调中提供返回值,难怪它会阻止您的应用程序。
另外,我猜您想分别注册两个听众。您目前拥有的是“每次回调 'fmail' 时将侦听器添加到 'fpass'”
您的代码应该看起来像这样(但不能确切地说出来)
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")
)
推荐阅读
- python - 从存储在 DataFrame 中的列表中删除项目
- excel - XML通过excel VBA读取
- javascript - 高度连接到 Y 滚动坐标的动态滚动条
- flutter - 颤振 | 如何防止列表的对象元素在每次访问时重新初始化?
- r - 如何在 Shiny 仪表板中刷新值框时避免闪烁
- c# - 如何实现 ImageButtons 的绑定,以便仅在加载图像后显示图像?
- postgresql - 检查我在表中的点(字段)总和是否大于表中所有其他人的点总和。很少有活动
- r - 如何编写一个 apply() 函数来将矩阵列中的每个元素限制为最大允许值?
- .net-6.0 - 如何删除 Microsoft.NETCore.App 6.0.0-rc.2.21480.5
- javascript - Nextjs中获取客户端IP