【发布时间】:2017-10-01 18:20:03
【问题描述】:
我试图了解 Promise 是如何工作的,但我不明白为什么我需要多次按下我的按钮,这个 Promise 链才能工作。
- 第一个函数创建新用户并返回一个承诺。
- 如果用户有车,第二次更新其他系统。
- 第三个应该在收到汽车 ID 时更新用户对象。
当我按下按钮时,只有CreateUser 被触发。如果我再次按下按钮,它也会触发UpdateModel。
CreateUser(newUser).then((userObject) => {
if(userObject.car) {
UpdateModel(userObject.objectId, userObject.car).then((carId) => {
userObject.car = carId;
UpdateUser(userObject).then((updatedUser) => {
this.moveNextPage(updatedUser);
});
}, (error) => {
console.log(error);
});
} else {
this.moveNextPage(userObject);
}
}, (error) => {
console.log(error);
})
【问题讨论】:
-
你没有从传递给
.then()的函数中返回promise,所以it返回的promise不会等待任何东西。 -
虽然嵌套 Promise 是这段代码中的一个问题,但真正的问题可能在于处理您的按钮点击的代码,这里不存在。
-
我决定将函数从 promise 重构为 async/await。更容易理解流程是如何进行的。我的承诺链的另一件事与此线程中所说的相同link