首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ipcMain需要帮助

ipcMain需要帮助
EN

Stack Overflow用户
提问于 2021-02-22 22:52:53
回答 2查看 191关注 0票数 0

我正在试图发送回复消息回我的渲染。在呈现中,我在控制台日志中从“未定义”中得到一个打印。我试图从我的api调用中获得json响应。

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

代码语言:javascript
复制
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;
});

代码语言:javascript
复制
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;
  });
  
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-02-23 00:23:42

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

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

解决方案是使用如下新消息进行回复:

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

然后像这样在渲染器里收到它:

代码语言:javascript
复制
var ipcRenderer = require('electron').ipcRenderer;
ipcRenderer.on('scenes_response', function (evt, messageObj) {
    // messageObj Now contains the response.
    console.log(messageObj);
});
票数 0
EN

Stack Overflow用户

发布于 2021-02-23 03:44:03

尝试win.webContetens.send而不是event.sender.send

像这样,

代码语言:javascript
复制
ipcMain.on("get_scenes", (event, arg) => {
    axios.get("http://localhost:60704/getMovies").then(function (response) {
        win.webContents.send('scenes_response', response);
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66324612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档