Как отправить статус прогресса из экспресс-ответа клиенту? - PullRequest
0 голосов
/ 04 апреля 2019

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

function allProgress(proms, progress_cb) {
  let d = 0;
  progress_cb(0);
  for (const p of proms) {
    p.then(() => {
      d++;
      progress_cb((d * 100) / proms.length);
    });
  }
  return Promise.all(proms);
}

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

  app.post('/api/v1/posts', async (req, res) => {
    try {
      const postData = req.body.postData;
      const results = await allProgress(getPostsArray(postData), (p) => {
        // I want to send back the percentage in this callback
        console.log(p);
        res.write(`${p}`);
      })
      res.send([].concat(...results))
    } catch (error) {
       console.log(error);
    }
  })

Когда я пытаюсь использовать res.write в моем обратном вызове, кажется, что он не работает. Это правильный подход для использования res.write здесь в моем обратном вызове.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...