0

我正在尝试将回复消息发送回我的渲染。在渲染中,我在控制台日志中打印出“未定义”。我正在尝试从我的 api 调用中获取 json 响应

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

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;
  });
  
});
4

2 回答 2

0

示例 #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);
});
于 2021-02-23T00:23:42.557 回答
0

尝试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);
    });
});
于 2021-02-23T03:44:03.747 回答