听说你很懂promise(十一)

下面代码运行结果是多少

const b={
  then(resolve){
    console.log('aa')
    resolve(4)
  }
}

Promise.resolve().then(()=>{
  console.log(0);
  return b;
}).then((res)=>{
  console.log(res);
})

Promise.resolve().then(()=>{
  console.log(1)
}).then(()=>{
  console.log(2)
}).then(()=>{
  console.log(3)
}).then(()=>{
  console.log(5)
})

答案:‘0 1 aa 2 4 3 5’,
‘当一个promise吸收一个thenable对象的时候(带有then方法),会在下一个微任务中调用它的then方法’,
‘先将代码翻译一下’,

const b={
  then(resolve){
    console.log('aa')
    resolve(4)
  }
}

const p1=Promise.resolve()
const p2=p1.then(()=>{
  console.log(0);
  return b;
})
const p3=p2.then((res)=>{
  console.log(res);
})

const p4=Promise.resolve()
const p5=p4.then(()=>{
  console.log(1)
})
const p6=p5.then(()=>{
  console.log(2)
})
const p7=p6.then(()=>{
  console.log(3)
})
const p8=p7.then(()=>{
  console.log(5)
})

‘控制台|微任务’,
’ | p1.then p4.then’,
‘0 1 | 下一次执行b.then方法(return b) p5.then’,
‘aa 2 | p2.then p6.then’,
‘4 3 | p7.then’,
‘5’


更多前端笔记,微信搜索小程序【坤坤前端笔记】,随时刷题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值