如何在进程发送响应之前等待进程终止

时间:2019-02-19 09:23:27

标签: javascript node.js promise electron

我正在使用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
 }

1 个答案:

答案 0 :(得分:1)

在您的page.js中,您的承诺应该类似于以下内容

module.exports = function(inputDate){
  return new Promise(async(resolve, reject) => {
    try{
      ...your code
      resolve(response);
    } catch (e) {
      reject(e.message)
    }
  })
}