Задать вопрос

Как сделать, что бы данная функция выполнялась последовательно?

доброго времени суток, подскажите, пожалуйста, как можно реализовать, что бы данная функция выполнялась последовательно
id_contacts.forEach(id => {
            axios({
                url: 'тут хук, который делает запрос к битрикс апи',
                method: 'post',
                data: {
                    id: lead_id,
                    fields: {
                        CONTACT_ID: id
                    }
                }
            }).then(res => {
                if (res.status != 200) {
                    errors = true
                }

            })
        })

axios({
                url: 'тут хук/bizproc.workflow.start.json',
                method: 'post',
                data: {
                    TEMPLATE_ID: 221,
                    DOCUMENT_ID: ['crm', 'CCrmDocumentLead', lead_id],
                }
            })


проблема в том, что не успеваются добавить контакты, как запускается бизнес процесс, и вопрос в том, как сделать что бы с начала все добавилось, а потом запустился бизнес процесс
  • Вопрос задан
  • 119 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Promise.all() дождётся выполнения всех.
Promise.all(
  id_contacts.map(id =>
    axios
      .post('api/add_contact', { id })
      .then()
      .catch(console.error)
  )
)
  .then(resultsArray => {
    axios.post('api/bizproc', { contacts: resultsArray });
  })
  .catch(console.error);
[warning] запросы контактов отправятся почти одновременно / параллельно, что может быть проблемой при большом их числе. Поэтому стоит продумать последовательные пачки параллельных запросов, если контактов там может быть больше, скажем, 10.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
async function foo(
  for (id of id_contacts) {
    const responce = await axios(...);
  }
  await axios(...)
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы