有时在调用第二个函数Promise返回的状态时,还有其它判断,全部写在一个函数代码太多,可以如下拆分,手动改变状态时一定要加 return 不然下个回调拿不到值!因为第一个函数res或rej代表状态完成,第二个函数都会走.then,想要手动控制状态必须return 保持微任务状态变化。
javascript"> function one () {
return new Promise(function(res,rej) {
// http .....
setTimeout(()=>{
res()
},1000)
}).then(res =>{
return Promise.resolve({res:'res'})
}).catch(()=>{
return Promise.reject({aa:'err'}) ;
})
}
function two (){
return new Promise((resolve,reject)=>{
if(xx) return xxFc(resolve,reject) ;
one()
.then(res =>{
xxFc(resolve,reject,res)
})
.catch(err =>{
reject()
})
})
}