关于ES6 Promise的一个问题

代码:

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之间的变化逻辑,以及最后就怎么输出这个了,应该是我比较愚钝。

有没有懂的朋友能帮助讲解一下,十分感谢


精慕HU
浏览 594回答 1
1回答

桃花长相依

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))Promise.resolve(promise);当resolve方法中传入一个promise对象时,则返回的状态会采用传入promise对象的返回状态,也是就是说这里p2的状态会采用p1返回的状态。因为p1中reject('123'),所以p2返回的状态自然为p1的reject('123'),即调用了.then中的第二个reject时候的回调函数即 result => console.log("error02",result)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript