#javascript #reactjs #post #axios
#javascript #reactjs #Публикация #axios
Вопрос:
У меня есть цикл запросов 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)})
}
и мне нужно превратить их в одно обещание axios. Как бы мне поступить, чтобы я мог вернуть обещание, которое гарантирует, что все выполнено?
мой желаемый результат return promise(...)
или что-то подобное, поскольку есть вещи, которые я должен выполнить, выполните последующие действия, подобные этому, в:
var chain = Promise.resolve()
.then(promise) // LOOPED AXIOS POST REQUEST ABOVE
.then(another_promise) // subsequent actions;
Комментарии:
1. используйте Promise.all
Ответ №1:
Вы можете поместить каждое обещание в массив и вызвать 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)})