promise.all 提前执行了?

张巨侠
  • 340

为什么请求提前执行了?

async submit() {
  let arr = this.list.map(item => {
    return this.sendRequest({
      id: item['id'],
      axis: `${item.x}%`
    })
  })  //请求在这就执行了
  let res = await Promise.all(arr)
  if (res) {
    console.log('success')
  }
},
sendRequest(data) {
  return new Promise((resolve, reject) => {
    resolve(updatePro(data))
  })
}

image.png

image.png

image.png
image.png
image.png

回复
阅读 409
2 个回答

只要 this.sendRequest({}) 一执行,对应的请求就会发出,所以 map 遍历的同时就已经把请求挨个发完了, Promise.all 只不过是在等结果(而不是等请求)。
程序看起来不会有问题,你不妨说一下预期效果是什么样子的。

sendRequest(data) {
  return new Promise((resolve, reject) => {
    updatePro(data).then(res => {
        resolve(res);
    })
  })
}

或者直接返回 request 因为 request 本身就是 Promise

sendRequest(data) {
  return updatePro(data)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏