我试图弄清楚迭代完成后如何实现异步执行方式
基本上我有类似的东西:
data.businesses.map( club => {
axios.get(`${ROOT_URL}/club/${currentEmail}/${club.id}`)
.then( ({data}) => {
placeholder.push( Object.assign({}, club, data))
})
.then( () => ..do extra stuff )
})
// when data.businesses.map is done iterating all of the elements, do something
如您所见,在通过axios
我对Promises
的想法还不熟悉,但我不确定在哪里申请,如果适用的话
答案 0 :(得分:3)
您可以使用Promise.all()
等待一系列承诺解决(或至少一个拒绝)。
要收集该集合,您可以让.map()
的迭代器函数通过从箭头函数中删除大括号来返回每个Promise。
let promisedClubs = data.businesses.map( club =>
axios.get(`${ROOT_URL}/club/${currentEmail}/${club.id}`)
.then( ({data}) => {
placeholder.push( Object.assign({}, club, data))
})
.then( () => ..do extra stuff )
);
Promise.all(promisedClubs).then(clubs => {
// when data.businesses.map is done iterating all of the elements, do something
}, failedClub => {
// error handling
});