需要 ipcMain 帮助
ipcMain help needed
我正在尝试将回复消息发送回我的渲染器。在渲染中,我在控制台日志中打印出“未定义”。我正在尝试从我的 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;
});
});
示例 #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);
});
});
我正在尝试将回复消息发送回我的渲染器。在渲染中,我在控制台日志中打印出“未定义”。我正在尝试从我的 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;
});
});
示例 #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);
});
});