Как ждать, пока процесс termiante отправит ответ - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю с Электроном, и я использую три страницы.Index.html, куда я отправляю запрос, Main.js, где обрабатывается запрос, и Page.js, где создается какая-то длинная асинхронная функция.

Моя проблема в том, что я не знаю, как сделать основной файлчтобы дождаться завершения процесса Page.js перед отправкой ответа на html-страницу.

Я попытался использовать обещание отправить данные обратно в html, но получаю сообщение об ошибке, потому что в нем указано .then() functionне является функцией.

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 голосов
/ 19 февраля 2019

В вашем page.js ваше обещание должно выглядеть примерно так:

module.exports = function(inputDate){
  return new Promise(async(resolve, reject) => {
    try{
      ...your code
      resolve(response);
    } catch (e) {
      reject(e.message)
    }
  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...