首页 > 技术文章 > electron 调用文件写入方法(fs.writeFile)后,前端卡死

keepLeung 2021-01-05 17:05 原文

问题现象:

  前端通过    ipcRenderer.sendSync('updateData', data) 调用主线程文件写入方法后,前端卡死

// 渲染进程逻辑
 
ipcRenderer.sendSync('updateData', data) 

 

// 主进程逻辑
ipcMain.on('updateData', (event, arg) => {
  fs.writeFile(
    path.join(__dirname, './src/config.json'),
    JSON.stringify(arg),
    'utf8',
    (err) => { 
      event.sender.send('data-reply', arg);
    }
  ); 
});

 

解决方法:

  将sendSync方法改为send方法

  

    ipcRenderer.send('updateData', data);

 

原因分析:

  sendSync为同步方法,渲染进程需要等待主进程返回,当主进程没有返回内容时,前端出现卡死现象。

推荐阅读