记录关于promise的题

一、宏任务和微任务容易混淆(针对我个人)

结果:25413

解释:

setTimeout是宏任务,promise的then是微任务。

本轮执行宏任务之后,执行本轮的微任务,之后再进行下一轮的宏任务执行。

resolve(3)其实就是在执行then()

1. 宏任务放入1

2. 打印2

3. 宏任务放入resolve(3),当该宏任务执行完之后执行resolve对应的then

4. 微任务放入4

5. 打印5

所以:25413

二、return 问题(该题出处:https://www.jianshu.com/p/802fc5801db4)

var p1 = Promise.resolve(42)
p1.then((value)=>{
    //第一种情况,返回一个Promise
    return new Promise(function(resolve,rejected){
        resolve(value+1)
    })

    //第二种情况,返回一个值
     return value+2;

    //第三种情况,新建一个promise,使用reslove返回值
    const p2 = new Promise(function(resolve,rejected){
        resolve(value+3)
    })

//第四种情况,新建一个promise,使用return返回值
    const p2 = new Promise(function(resolve,rejected){
        return(value+4)
    })

//第五种情况,没有返回值
  return undefined
}).then((value)=>{
   console.log(value)
})

第一种情况,新建promise的resolve传出的值将作为then方法返回的promise的resolve的值传递出,console将打印出43

第二种情况,return的值将作为then方法返回的promise的resolve的值传递出,console将打印出44

第三种情况,虽然新建了promise,但对于then方法来说,没有向它返回的promise传递返回值,console将打印出undifined

第四种情况,同第三种情况,

第五种情况,then方法没有返回值,then方法的promise的resolve的值将传递出undifined。

以上三、四、五种情况,其实都是一样的问题,构造then方法的函数没有向then方法返回的promise对象的resolve方法传递值。因此resolve返回的都是undfined

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值