как показать асинхронные данные в пользовательском интерфейсе - PullRequest
0 голосов
/ 09 декабря 2018

Я написал асинхронную функцию, которая должна вызывать программу на сервере, и эта программа генерирует файл, который необходимо загрузить в пользовательский интерфейс для отображения.Я не уверен, как отобразить результат в моем пользовательском интерфейсе, поскольку execFile является асинхронной функцией, и может потребоваться несколько секунд, чтобы быть готовым?

Нужно ли иметь вид бесконечного цикла, чтобы проверить, готов ли результат всервер?

Я использую руль nodejs-express.

router.post('/',function(req, res, next) {
  const child = execFile('program.exe', ['in.sql'], (error, stdout, stderr) => {
      if (error) 
      {
        console.log(error);
        return error;
      }
      else
      {
        // TODO: how to send the result to UI?
        console.log(stdout);
      }
    });
    return res.sendStatus(200);
});

схема того, что я хочу сделать.enter image description here

1 Ответ

0 голосов
/ 11 декабря 2018

Избегайте опроса, когда это возможно.Иногда вы не можете избежать этого, но здесь вы можете.Просто используйте обработчики событий, чтобы узнать, каково состояние процесса.Вы можете зарегистрировать обработчики для следующих связанных событий:

  • отключить
  • ошибка
  • закрыть
  • сообщение

Пример использования:

child.on('exit', function (code, signal) {
  console.log('child process exited with ' +
              `code ${code} and signal ${signal}`);
});

Для получения дополнительной информации см. это подробное объяснение на веб-сайте freeCodeCamp (не связан).

...