首页 > 解决方案 > 将 Promise.All 用于多个 ajax 请求时,如何将该数据分配给局部变量?

问题描述

我正在尝试使用 Promise.All() 三次。每一个都针对一个特定的ajax请求数组,这些请求调用我的代码隐藏中的一个函数,该函数返回一个jsonresult。有没有办法可以从 promise.all 获取数组返回并将其分配给本地数组。我最初尝试在 ajax 上使用 async:false,但速度非常慢。还有其他可能吗?

标签: javascriptc#jquery

解决方案


你很幸运!Promise.all返回一个数组,输出中的每个元素对应于输入的元素。

let asyncResults = await Promise.all([
    asyncOp0(),
    asyncOp1(),
    asyncOp2()
])

此时,asyncResults是一个局部数组。

asyncResults[0]将是 asyncOp0 的返回

asyncResults[1]将是 asyncOp1 的返回

asyncResults[2]将是 asyncOp2 的返回

听起来这正是你想要的。

如果它返回的速度对您来说不够快,则可能的罪魁祸首是您正在访问的 HTTP 端点。您应该研究该端点的性能。或者,如果 HTTP 响应非常大,那么糟糕的性能只是其结果。补救措施可能需要您重新设计服务器 API 以返回您关心的数据的较小表示形式。


推荐阅读