不理解这种写法

看到一个vuedmeo
他这个为什么直接用Promise.all
Promise不都要先new的吗,为什么可以这样用?

clipboard.png

阅读 1.8k
1 个回答
Promise.all([]) instanceof Promise // true

可以看到Promise.all这个静态方法返回的也是一个Promise实例。Promise.all的作用是在等待传入的所有Promise被resolve后再Promise.all所返回的promise的resolve,或在一个被reject后立即调用reject。场景是比如一个页面的渲染,需要请求几个数据,同时这几个数据没有互相依赖可以一起请求。

下面的例子里将在500毫秒后输出2, 'err1':

Promise.all([new Promise(function (res) {
  setTimeout(function () {
    res(1)
  }, 100)
}), new Promise(function (res, rej) {
  setTimeout(function () {
    rej('err1')
  }, 500)
}), new Promise(function (res, rej) {
  setTimeout(function () {
    rej('err2')
  }, 3000)
})]).then(function (results) {
  console.log(1)
}, function (err) {
  console.log(2, err)
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题