Promise.all с цепочкой обещаний внутри - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть такой метод:

doSomeRequests(listOfRequestParameters) {
  let requests = listOfRequestParameters.map(parmeter => {
    return axios.get(url + parmeter)
    .then(data => {
      const parameters= data.parameters;
      return axios.delete(url, parameters)
    })
  })
  return Promise.all(requests);
}

В этой функции я хочу выполнить запросы API для каждого элемента в списке (listOfRequestParameters), но для каждого элемента в списке мне нужно сделать дваЗапросы API.

Оба метода axios возвращают Promises.

Проблема заключается в том, что я перехватываю результат метода Promise return y doSomeRequests, но в случае сбоя одного запроса API я получаю UnhandledPromiseRejectionWarning.

Чего мне не хватает?Есть ли способ создать такую ​​цепочку Promise?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Вы должны убедиться, что вызов карты возвращает список обещаний, упрощая с помощью async / await, вы получите что-то вроде:

async doSomeRequests(listOfRequestParameters) {
  return Promise.all(listOfRequestParameters.map(async parmeter => {
    const data = await axios.get(url + parameter);
    const parameters = data.parameters;

    return axios.delete(url, parameters);
  }));
}

await doSomeRequests(listOfRequestParameters);
0 голосов
/ 12 сентября 2018

Спасибо @charlietfl за вопрос, действительно ли я делаю doSomeRequests(..).then().catch(). Оказывается, нет, я случайно набрал doSomeRequests(..).then().then(), но каким-то образом был убежден, что мне нужно искать ошибку в «сложной» цепочке Promise.

В любом случае, я прошу прощения за бесполезный вопрос, спасибо за вашу помощь.

...