为了账号安全,请及时绑定邮箱和手机立即绑定

关于ES6 Promise的一个问题

关于ES6 Promise的一个问题

精慕HU 2018-10-25 17:14:24
代码:var p1 = new Promise(function (resolve, reject) {     setTimeout(() => reject("123"), 3000) })var p2 = new Promise(function (resolve, reject) {     setTimeout(() => resolve(p1), 1000) }) p2     .then(result => console.log("error01",result),         result => console.log("error02",result))     .catch(error => console.log("error2",error))最后打出error02 123并没有看懂p1和p2之间的变化逻辑,以及最后就怎么输出这个了,应该是我比较愚钝。有没有懂的朋友能帮助讲解一下,十分感谢

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

var p1 = new Promise(function (resolve, reject) {

    setTimeout(() => reject("123"), 3000)

})


var p2 = new Promise(function (resolve, reject) {

    setTimeout(() => resolve(p1), 1000)

})


p2

    .then(result => console.log("error01",result),

        result => console.log("error02",result))

    .catch(error => console.log("error2",error))

  1. Promise.resolve(promise);当resolve方法中传入一个promise对象时,则返回的状态会采用传入promise对象的返回状态,也是就是说这里p2的状态会采用p1返回的状态。

  2. 因为p1中reject('123'),所以p2返回的状态自然为p1的reject('123'),即调用了.then中的第二个reject时候的回调函数即 result => console.log("error02",result)。


查看完整回答
反对 回复 2018-11-16

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号