promise.then()返回新的promise的结果状态由什么决定?
(1)简单表达:由 then()指定的回调函数执行的结果决定
(2)详细表述:
-
如果抛出异常,新promise变为rejected,reason为抛出的 异常
-
如果返回值是非promise的任意值,新promise变为resolve,value为返回 的值
-
如果返回的是另一个新的promise,此promise的结果会成为新的promise的结果
new Promise((resolve,reject)=>{
resolve(1)
// reject(2);
}).then(
value=>{
console.log("onResolve1()",value);
// return 2; //输出 onResolve1() 1 onResolve2() 2
// return Promise.resolve(333); //onResolve1() 1 onResolve2() 333
// return Promise.reject(444); //onResolve1() 1 onRject2() 444
throw 5; //onResolve1() 1 onRject2() 5
},
reason=>{
console.log("onRject1()",reason)
}
).then(
value=>{
console.log("onResolve2()",value)
},
reason=>{
console.log("onRject2()",reason)
return Promise.resolve(666);
}
).then(
value=>{
console.log("onResolve3()",value);
},
reason=>{
console.log("onReject3()",reason);
}
)