关于promise 的 PromiseStatus : “resolved”、PromiseValue return 值是 undefined

//上源代码
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。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值