我正在试图发送回复消息回我的渲染。在呈现中,我在控制台日志中从“未定义”中得到一个打印。我试图从我的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;
});
});发布于 2021-02-23 00:23:42
示例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-23 03:44:03
尝试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);
});
});https://stackoverflow.com/questions/66324612
复制相似问题