promise中的return

有return

return 123 和then的关系

  • return 123 下一个.then接收这个传入值
new Promise((resolve, reject)=>{
  resolve()
}).then(()=>{
  setTimeout(()=>{
    return 123
  })
}).then((res)=>{
  console.log(res,'------')
})
// undefined '------'

虽然第一个then有return值,但是包在了延迟任务里,就挂载起来了,这时候还是会继续执行第二个then返回的undefined 。

return promise 和then的关系

  • 如果then回调函数里 return的是 另一个promise 实例 该then后面的回调函数 会等待这个promise实例执行状态改变后才会执行
new Promise((resolve, reject)=>{
  resolve()
}).then(()=>{
  return new Promise((resolve, reject)=>{
    setTimeout(()=>{
      console.log(1)
      resolve()
    },2000)
  })
}).then(()=>{
  console.log(2)
})
// 1 2

settimeout里面有console和resolve

promise中的return_第1张图片

  • 先输出timer1

不同级别的then

  • 123456 先执行上一个then(即使里边有settimeout),才能执行下一个then
    promise中的return_第2张图片

你可能感兴趣的:(javascript,前端,vue.js)