最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

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

运维笔记admin14浏览0评论

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

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

我正在和Electron合作,我正在使用三页。我发送请求的Index.html,处理请求的Main.js和创建了一些长异步函数的Page.js

我的问题是我不知道如何使主文件等待Page.js进程完成后再将响应发送到html页面。

我试图使用一个承诺将数据发送回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
 }
回答如下:

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

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

评论列表(0)

  1. 暂无评论