使用 promise.all() 并行发起多个请求,利用 javascript 事件循环的并发特性实现数据预串行策略。通过传入一组 promise 对象数组,等待所有请求完成后再统一处理结果,从而避免逐个请求带来的延迟累积。

如何确保在获取用户信息后按顺序加载其订单数据
先调用 fetch('/api/user') 获取用户 ID,然后在 .then() 回调中基于该 ID 发起第二个 fetch('/api/orders?id=...') 请求。这种链式调用确保了数据的严格串行依赖,即只有前一个请求成功返回后,才会触发下一个请求的执行。

const userId = 101;
fetch(`/api/user/${userId}`)
.then(response => response.json())
.then(user => {
console.log('User loaded:', user.name);
return fetch(`/api/orders?userId=${user.id}`);
})
.then(response => response.json())
.then(orders => {
console.log('Orders loaded:', orders.length);
});
如何处理多个独立资源的数据预串行聚合
当需要同时获取多个不相关的资源(如配置、列表、统计)时,使用 Promise.all() 将它们放入数组中并行执行。这种方式实现了“逻辑上的串行”:代码在 await 或 .then() 处暂停,直到所有并行任务都完成,随后以数组形式一次性返回所有结果,便于后续的统一组装。

const configPromise = fetch('/api/config').then(r => r.json());
const listPromise = fetch('/api/list').then(r => r.json());
const statsPromise = fetch('/api/stats').then(r => r.json());
Promise.all([configPromise, listPromise, statsPromise])
.then(([config, list, stats]) => {
console.log('All data aggregated');
renderPage(config, list, stats);
});
如果某个预串行请求失败会怎样
在使用 Promise.all() 进行并行预串行时,只要其中一个 Promise 被拒绝(Reject),整个 Promise.all 就会立即进入失败状态,导致其他正在进行的请求虽然可能仍在后台运行,但前端将直接捕获到错误而不会收到任何部分成功的结果。若需容错,应改用 Promise.allSettled()。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











