Welcome to www.baijc.xyz!

传递解决值和拒绝理由


到了落定状态后,期约会提供其解决值(如果兑现)或其拒绝理由(如果拒绝)给相关状态的处理程序。拿到返回值后,就可以进一步对这个值进行操作。比如,第一次网络请求返回的JSON是发送第二次请求必须的数据,那么第一次请求返回的值就应该传给onResolved处理程序继续处理。当然失败的网络请求也应该把HTTP状态码传给onRejected处理程序。

在执行函数中,解决的值和拒绝的理由是分别作为resolve()和reject()的第一个参数往后传的。然后,这些值又会传给它们各自的处理程序,作为onResolved或onRejected处理程序的唯一参数。下面的例子展示了上述传递过程:

let p1 = new Promise((resolve, reject) => resolve('foo'));
p1.then(value => console.log(value)); // foo
let p2 = new Promise((resolve, reject) => reject('bar'));
p2.catch(reason => console.log(reason)); // bar

Promise.resolve()和Promise.reject()在被调用时就会接收解决值和拒绝理由。同样地,它们返回的期约也会像执行器一样把这些值传给onResolved或onRejected处理程序:

let p1 = Promise.resolve('foo');
p1.then(value => console.log(value)); // foo
let p2 = Promise.reject('bar');
p2.catch(reason => console.log(reason)); //bar


Thank you for using baijc.xyz.