Аксиос пост в петле - PullRequest
       5

Аксиос пост в петле

0 голосов
/ 28 апреля 2018

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

  async sendMessage(req) {
    let axiosArray = [];
    const loopCount = req.chasm.attachments.length || 1;

    for (let i = 0; i < loopCount; i += 1) {
      let chatResponse = req.chasm.chatResponse;
      if (i > 0 && req.chasm.attachments[i]) {
        chatResponse.attachments = req.chasm.attachments[i];
      }
      const newPromise = axios({
        method: 'post',
        url: this.serviceUri,
        data: chatResponse,
      });
      axiosArray.push(newPromise)
    }

    await axios
      .all(axiosArray)
      .then(axios.spread((...responses) => {
        responses.forEach(res => console.log('Success'));
      }))
      .catch((err) => {
        console.log('sendMessage catch error', err);
      });
  }
}

Это происходит одинаково, независимо от того, есть ли асинхронное ожидание или нет. Однако, если я переместу await внутри цикла, что ESLint говорит мне не делать, const newPromise = await axios({ он будет работать, как и ожидалось. У меня такое ощущение, что это не правильный ответ, а скорее, что есть лучший способ структурировать его, которого я не вижу. Есть мысли?

...