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

回复
阅读 407
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)
}
你知道吗?

宣传栏