【发布时间】:2018-06-22 19:22:08
【问题描述】:
我正在玩一些涉及承诺的异步调用(AXIOS 调用)。代码的问题是 this.reloadData() 在 this.updateUsers() 和 this.updateEmails() 执行和完成之前被调用。等待两个函数完成,然后调用 this.reloadData() 的正确方法是什么?
rest.putEmail 和 rest.putUser 都是 axios REST API 调用。
mainFunc() {
Promise.all([this.updateUsers(), this.updateEmails()]).then(() => {
this.reloadData();
})
}
updateEmails() {
const {emails} = this.state;
if (emails.length > 0) {
emails.map(user => {
rest.putEmail(email.id, email.content)
.catch(err => {this.error(err)});
});
}
}
updateUsers() {
const {users} = this.state;
if (users.length > 0) {
users.map(user => {
rest.putUser(user.id, user.name)
.catch(err => {this.error(err)});
});
}
}
【问题讨论】:
-
为了让它工作,你的函数需要返回承诺
-
@dave im 为集合中的每个项目调用 rest 调用。我怎样才能将所有这些包装成一个承诺然后返回它?
-
@ssss 你已经在你的第一个函数中这样做了:
Promise.all()就是答案。
标签: javascript reactjs promise axios