javascript - 所有请求一一返回,不并发
问题描述
你能帮我写代码吗?我需要同时运行请求,但要一一获取请求。下面的代码示例(使用 VueJS 方法/函数)
async manageData() {
// array of chart's properties
const charts = await axios.post('/report/chart_data', {id: this.id);
// concurrent requests with variable 'charts'
const result = await Promise.all(
charts.map((chart, key) => axios.post('/report/data_range', {id: key}))
);
}
解决方案
const charts = await axios.post('/report/chart_data', {id: this.id);
将发出一个请求并等到它完成后再继续。这是必要的,因为您随后会使用charts
响应来形成后续请求。
charts.map((chart, key) => axios.post('/report/data_range', {id: key}))
将charts.length
并行发出多个请求。根据您的描述,这是可取的,因为看起来请求是独立的。
您的屏幕截图支持此分析(第一个请求在并行发出后续请求之前等待响应)。
如果您知道响应的长度,则charts
可以并行化第一个和后续请求,因为您只使用key
(index) 而不是实际chart
的 s 来执行后面的请求。
如果您担心为什么您的后一个请求似乎需要稳定增加的时间来响应,那可能只是每个请求的复杂性的巧合,或者正如用户 ctt@ 在评论中指出的那样,可能表明您的后端没有处理请求同时。但这似乎不是您关心的问题(根据您的评论)。
推荐阅读
- language-agnostic - 在 Vulkan 中更新顶点缓冲区的最正确的方法
- azure - Azure 数据工厂“Set_Variabe”数组和“FOR_EACH”exe_pipelines 活动
- pandas - 用当前子目录名称填充数据框中的列值
- xml - 如何使用 Python 遍历日志文件中的 xml
- typescript - 打字稿模板类 typeof
- linux - Cassandra - 内存不足(大型服务器)
- google-app-engine - 我可以将哪个自动缩放数据库与 Google App Engine 一起使用
- php - 如何通过payeer支付API显示payeer钱包余额?
- ios - 如何在 iOS 上显示使用 firebase-cpp-sdk 收到的 FCM“数据”消息?
- asp.net - 从 Visual Studio 保存页面时,标签结束标记 () 被写入我的 .aspx 页面