let p1 = ()=>{
data = xxxx // xxx 是从数据库获取的一个值 true 或 false
return new Promise((res,rej)=>{
res(data)
})
}
// p2 p3 都是promise
let p2 = ....
let p3 = ....
// 执行
p1()
.then(
(data)=>{
if (data) {
return p2
} else {
return p3
}
}
)
.then(
// 如何去判断是 p2 的resolve,还是 p3 的 resolve
)
要判断是p2的resolve,还是p3的resolve,归根结底是判断data的值是true还是false,由于Promise链式调用值传递的限制,在p1()的第二个then函数内部是拿不到data值的,有两个方式可以做简单的判断:
然后在第一个then函数里面
就可以直接在第二个then函数里面通过my_data来进行判断了。
其实最好的方法是直接用async/await方式来改写这个异步代码,这样就不用这些low b的方式来传一个data值了~