当前位置: 首页 > news >正文

小知识-为什么处理异步数据渲染需要async await 搭配Promise.all实现?

1、背景:在开发过程中,经常遇到多条数据是异步获取的,但是有时会因为异步问题导致页面渲染不完整,即数据展示不全,如果通过console.log打印下就回发现是因为页面在异步数据返回去就渲染了,也可通过设置定时器验证。

2、怎么解决呢?这里普遍使用的是async await 搭配Promise.all实现。

if (id.value) {const { data } = await queryId(id.value)if (!data) return// 使用Promise.all等待所有异步请求完成const promises = data.kaVehicleOrderDetailRespList.map(async (item) => {const params = {productCode: item.productCode,}const { data: transitData } = await vehicleStockPage(params)transitInventory.value = transitData.totalif (transitData.records.length > 0) {let array = transitData.records.map((newItem) => ({label: newItem.warehouseName,value: newItem.warehouseCode}))item.vehicleWarehouseCodeOptions = Array.from(new Map(array.map((item) => [item.value, item])).values())}return item})// 等待所有请求完成const results = await Promise.all(promises)rowData2.value.list = results}

3、为什么?

当多个异步操作结果需要同时渲染时,Promise.all确保所有数据就绪后才进行渲染,避免部分更新造成的界面闪烁或不一致。

// 串行方式 - 效率低
async function fetchDataSerial() {const user = await fetchUser();     // 等待完成const posts = await fetchPosts();   // 然后等待const comments = await fetchComments(); // 再等待return { user, posts, comments };
}
// 总时间 ≈ 每个请求时间之和// 并行方式 - 效率高
async function fetchDataParallel() {const [user, posts, comments] = await Promise.all([fetchUser(),fetchPosts(),fetchComments()]);return { user, posts, comments };
}
// 总时间 ≈ 最慢的请求时间

http://www.dtcms.com/a/352238.html

相关文章:

  • 昆仑资本完成对国产工业操作系统龙头企业光亚鸿道的投资
  • MYSQL递归
  • mysql优化-mysql索引下推
  • Python 将十进制转换为十六进制
  • Linux命令详解+示例(炫彩超全)
  • 2025秋招季:AI笔试破解大规模招聘难题
  • MySQL 面试题系列(四)
  • Pandas 分组聚合进阶:过滤与 apply
  • 【人工智能】神经网络的优化器optimizer(三):RMSProp动态自适应学习率优化器
  • java自定义注解实现
  • 开发electron时候Chromium 报 Not allowed to load local resource → 空白页。
  • 在使用spring ai进行llm处理的rag的时候,选择milvus还是neo4j呢?
  • gorm 枚举查询遇到的问题
  • 【Python】Python日志模块完全指南:从配置到常见错误排查
  • 深入OpenHarmony后台任务“黑匣子”:BackgroundTaskMgr框架全栈解析与实战避坑指南
  • C#编程:贪吃蛇游戏
  • 使用linux+javascript+html+mysql+nodejs+npm+express等构建信息资料采集系统
  • FreeRTOS 同步互斥与任务协作 学习笔记
  • 【Protues仿真】定时器
  • 对讲联动电梯门禁系统通过深度集成对讲、梯控、身份认证三大模块,在提升便捷性的同时,以“权限后置发放+电梯状态闭环检测“为核心,实现安全性与可靠性的双重突破。
  • 解决VSCode无法下载服务器端 Server问的题
  • 当 C++ 用于嵌入式开发:优点和缺点
  • .gitignore 文件相关使用配置
  • 【Redis】安装和基础命令
  • 十、Java面向对象编程入门指南:继承与多态
  • 利用 OpenTelemetry 建设尾部采样
  • 大模型全栈学习路线:4 - 6 个月从入门到实战,打通技术与业务闭环
  • [灵动微电子 霍尔FOC MM32BIN560C]从引脚到应用
  • 《黑客帝国》解构:白帽黑客的极客思维宇宙
  • vue3写一个简单的时间轴组件