ipcMain需要帮助



我正试图发送回复消息回我的渲染。在渲染中,我得到了一个打印出来的"undefined"在控制台日志中。我试图得到json响应从我的api调用返回

到目前为止,我尝试了以下

ipcMain.on("get_scenes", (event, arg) => {
axios.get("http://localhost:60704/getMovies").then(function (response) {
// handle success
console.log("my message", response);
});
event.returnValue = response;
});

ipcMain.on("get_scenes", (event, arg) => {
axios.get("http://localhost:60704/getMovies").then(function (response) {
// handle success
console.log("my message", response);
event.returnValue = response;
});

});

示例#1中的问题是response变量不能从它声明的函数外部获得。

示例#2中的问题是axios.get(是异步的,这意味着它不像同步函数那样立即获得响应。这意味着event.returnValue将设置得太晚,响应将无法工作。

解决方案是用这样的新消息回复:

ipcMain.on("get_scenes", (event, arg) => {
axios.get("http://localhost:60704/getMovies").then(function (response) {
event.sender.send('scenes_response', response);
});
});

然后在渲染器中接收它,像这样:

var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('scenes_response', function (evt, messageObj) {
// messageObj Now contains the response.
console.log(messageObj);
});

尝试win.webContetens.send代替event.sender.send

,

ipcMain.on("get_scenes", (event, arg) => {
axios.get("http://localhost:60704/getMovies").then(function (response) {
win.webContents.send('scenes_response', response);
});
});

相关内容

  • 没有找到相关文章

最新更新