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

js 实现 ajax 并发请求

  1. Promise.all 并发请求(全部完成后处理)
// 使用 fetch 作为示例
function getData(url) {return fetch(url).then(res => res.json());
}Promise.all([getData('/api/user'),getData('/api/order'),getData('/api/cart')
])
.then(([user, order, cart]) => {console.log('用户数据:', user);console.log('订单数据:', order);console.log('购物车数据:', cart);
})
.catch(err => {console.error('其中一个请求失败:', err);
});

特点:

  • 所有请求是同时发出的
  • 只有全部成功才进入 .then,有一个失败就进入 .catch
  1. Promise.allSettled(不管成败都处理)
Promise.allSettled([fetch('/api/user').then(res => res.json()),fetch('/api/order').then(res => res.json()),fetch('/api/cart').then(res => res.json())
])
.then(results => {results.forEach((result, index) => {if (result.status === 'fulfilled') {console.log(`${index+1}个成功:`, result.value);} else {console.error(`${index+1}个失败:`, result.reason);}});
});

特点:

  • 不会因为某个失败而中断
  • 每个请求的状态都会返回
  1. 限制并发数(比如同时只能跑 2 个)
// 并发控制工具
async function limitConcurrency(urls, limit) {const results = [];const queue = [...urls];async function worker() {while (queue.length) {const url = queue.shift();try {const res = await fetch(url).then(r => r.json());results.push(res);} catch (err) {results.push(err);}}}const workers = Array.from({ length: limit }, worker);await Promise.all(workers);return results;
}// 用法
limitConcurrency(['/api/1', '/api/2', '/api/3', '/api/4'], 2).then(res => console.log('结果:', res));

特点:

  • 适合需要防止高并发压垮服务器的场景
  • 一批批并发执行
http://www.dtcms.com/a/323894.html

相关文章:

  • selenium自动化测试速成
  • 腾讯云EdgeOne KV存储在游戏资源发布中的技术实践与架构解析
  • 嵌入式开发学习(第三阶段第四天 Linux系统开发)
  • 每日任务day0810:小小勇者成长记之武器精炼
  • Docker部署到实战
  • Java 大视界 -- Java 大数据机器学习模型在电商商品销量预测与库存精准管理中的应用(391)
  • Pytorch进阶-timm库-00快速开始
  • AI大模型 教师方向应用探索
  • 联合理解生成的关键拼图?腾讯发布X-Omni:强化学习让离散自回归生成方法重焕生机,轻松渲染长文本图像
  • 机械学习--DBSCAN 算法(附实战案例)
  • 基于梅特卡夫定律的开源链动2+1模式AI智能名片S2B2C商城小程序价值重构研究
  • Jenkins | 账号及权限管理
  • Python爬虫实战:研究Ruia框架,构建博客园文章采集系统
  • 【Elasticsearch入门到落地】16、RestClient查询文档-快速入门
  • AIStarter:全网唯一跨平台桌面AI管理工具,支持Windows、Mac和Linux一键部署
  • 滚动条开始滚动时,左侧导航固定,当左侧内容触底到footer时左侧内容取消固定并跟随滚动条滚动
  • ADK【4】内置前端调用流程
  • TDengine IDMP 快速体验(方式二 通过 docker)
  • 安全引导功能及ATF的启动过程(五)
  • Linux 虚拟机磁盘空间占满-全面清理方案
  • GoBy 工具联动 | GoBy AWVS 自动化漏扫工作流
  • [论文阅读] 人工智能 + 软件工程 | 大型语言模型对决传统方法:多语言漏洞修复能力大比拼
  • Kafka 生产者与消费者分区策略全解析:从原理到实践
  • 音视频学习(五十一):AAC编码器
  • Samba使用
  • java常见算法
  • 前端开发的奇技淫巧 --- 持续更新中
  • 《P3403 跳楼机》
  • 搭建本地 Git 服务器
  • Beelzebub靶机攻略