我正在使用Electron和im使用三页内容。 Index.html
用于发送请求,Main.js
用于处理请求,Page.js
用于创建一些长异步功能。
我的问题是,在将响应发送到html页面之前,我不知道如何使主文件等待Page.js
进程完成。
我尝试使用Promise将数据发送回html,但是却收到错误消息,因为它说.then()
函数不是函数。
Index.html
document.querySelector('#formhomepage').addEventListener('submit', function(e) {
e.preventDefault();
let date = document.getElementById("date-input").value;
const {ipcRenderer} = require('electron')
// send InputDate to main.js
ipcRenderer.send('asynchronous-message', date )
// receive output from main.js
ipcRenderer.on('asynchronous-reply', (event, arg) => {
console.log(arg);
document.getElementById('results').innerHTML = arg;
});
});
Main.js
ipcMain.on('asynchronous-message', (event, inputDate) => {
var excel_n1 = require('./page.js');
excel_n1(inputDate).then(result => event.sender.send('asynchronous-reply', result ) )
.catch(error => {console.log("error")});
});
page.js
module.exports = async function(inputDate){
// long await function with a lot of async and await
}
答案 0 :(得分:1)
在您的page.js
中,您的承诺应该类似于以下内容
module.exports = function(inputDate){
return new Promise(async(resolve, reject) => {
try{
...your code
resolve(response);
} catch (e) {
reject(e.message)
}
})
}