Включите цикл отправки запросов Axios на обещание - PullRequest
0 голосов
/ 29 марта 2019

У меня есть цикл запросов axios:

for(const [number, response] of Object.entries(questions)){
  axios.post(
    this.address+'surveypost',
     {"patientID": patientID,
              "questionID": number,
                "likertResponse": response,
                  "surveyNumber": surveyID, "admin": this.admin, "masterpassword": this.masterpassword},
    { headers: {'Content-Type': 'application/json'} }
  )
    .then(e =>{console.log(e);
    console.log("inserted")})
    .catch(error =>{console.log(error)})
}

и мне нужно превратить их в одно обещание. Как мне поступить так, чтобы я мог вернуть обещание, которое гарантирует, что все выполнено?

мой желаемый результат - return promise(...) или что-то подобное, поскольку есть вещи, которые я должен сделать, чтобы выполнить следующие действия, как это в:

var chain = Promise.resolve() .then(promise) // LOOPED AXIOS POST REQUEST ABOVE .then(another_promise) // subsequent actions;

1 Ответ

0 голосов
/ 29 марта 2019

Вы можете отправить каждое обещание в массив и вызвать Promise.all

let promsArr = [];
for(const [number, response] of Object.entries(questions)){
  promsArr.push(axios.post(
    this.address+'surveypost',
     {"patientID": patientID,
              "questionID": number,
                "likertResponse": response,
                  "surveyNumber": surveyID, "admin": this.admin, "masterpassword": this.masterpassword},
    { headers: {'Content-Type': 'application/json'} }
  ))
}

Promise.all(promsArr)
.then(resp => {
  console.log("data", resp);
})
.catch(err => {console.log(err)})
...