Promise.then()的返回是一个新的 Promise 对象,返回的新 promise 的结果状态由什么决定?
由 then() 指定的回调函数执行的结果决定
-
如果抛出异常,状态就是 rejected, reason 就是抛出的异常
-
如果返回的是非 promise 的任意值, 状态是 resolve,结果就是任意值
-
如果返回的是 promise,状态就是 promise 的状态,结果就是promise的结果
let p = new Promise((resolve, reject) => {
resolve("ok");
});
let result = p.then(
(value) => {
// 1.抛出异常
// throw "出错啦";
// 2.返回的是非 promise 的任意值
// return 521
// 3.返回promise
return new Promise((resolve,reject)=>{
resolve('ok')
})
}
);
console.log(result);
// 1. Promise{ [[PromiseState]]: "rejected" [[PromiseResult]]: "出错啦" }
// 2. Promise{ [[PromiseState]]: "fulfilled" [[PromiseResult]]: 521 }
// 3. Promise{ [[PromiseState]]: "fulfilled" [[PromiseResult]]: 'ok' }