【发布时间】:2019-02-19 09:23:26
【问题描述】:
我正在与 Electron 合作,我正在使用三页。 Index.html 我发送请求,Main.js 处理请求,Page.js 创建一些长异步函数。
我的问题是我不知道如何让主文件等待Page.js 进程完成,然后再将响应发送到 html 页面。
我尝试使用 promise 将数据发送回 html,但我收到错误消息,因为它说 .then() 函数不是函数。
索引.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
}
【问题讨论】:
-
你的承诺在哪里?问题是在您的
excel_n1函数中您没有得到响应? -
我得到了回复,但几分钟后。在 main.js 将响应发送到 Index.html 之前,我必须等待。我试图实现一个承诺,但没有成功。承诺在 page.js 文件的 async 函数中实现。
-
在
indexipcRenderer你想等待来自Mainexcel_n1函数的响应?等待page.js? -
是的,完全正确。 excel_n1 变量是从文件 page.js 导入的函数
-
您的
.then(result)是否返回结果?在excel_n1函数中
标签: javascript node.js promise electron