//上源代码
const promise1 = new Promise((resolve, reject) => {
console.log('promsie1')
resolve('resolve1')
})
const promise2 = promise1.then(res => {
console.log(res)
// return res
})
console.log('1', promise1)
console.log('2', promise2)
打印结果
promsie1
1 Promise {<resolved>: "resolve1"}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: "resolve1"
2 Promise {<pending>}
__proto__: Promise
[[PromiseStatus]]: "resolved"
[[PromiseValue]]: undefined
resolve1
代码执行顺序,先顺序执行,promise2的then方法作为微任务在打印之后执行,但是在打印promise2时,此时的微任务还没有执行,所以promise2的状态是pending。then方法正常是接收参数,执行结束以后会返回一个新的 promise, then方法的return会在这个新的promise的内部被接收。如果这个then里面return的是一个new Promise,那么PromiseStatus就是new Promise的状态;如果return的不是new Promise,或者没有进行return的话,PromiseStatus就是resolved状态,因为非Promise类是不存在状态判定的,所以会自动转化为成功判定。所以promise2的 PromiseStatus : “resolved”。PromiseValue return出来的值是undefined。