请写一个合并Promise的函数,实现异步函数顺序执行,并把结果顺序输出
在JavaScript中,你可以使用Promise.resolve()
和.then()
链式调用来顺序执行异步函数并顺序输出结果。以下是一个简单的示例,演示了如何合并多个Promise以实现此目的:
function runPromisesInOrder(promiseFuncs) {
// promiseFuncs 是一个包含返回Promise的函数的数组
return promiseFuncs.reduce((promiseChain, currentFunction) => {
return promiseChain.then((chainedResults) =>
currentFunction().then((currentResult) => {
// 将当前结果添加到之前的结果数组中
return [...chainedResults, currentResult];
})
);
}, Promise.resolve([])); // 初始值是一个解析为空数组的Promise
}
// 示例异步函数
const asyncFunc1 = () => new Promise((resolve) => setTimeout(() => resolve(1), 1000));
const asyncFunc2 = () => new Promise((resolve) => setTimeout(() => resolve(2), 500));
const asyncFunc3 = () => new Promise((resolve) => setTimeout(() => resolve(3), 750));
// 使用示例
runPromisesInOrder([asyncFunc1, asyncFunc2, asyncFunc3]).then((results) => {
console.log(results); // 输出: [1, 2, 3]
});
在这个示例中,runPromisesInOrder
函数接受一个包含异步函数的数组作为参数。这些异步函数应该返回一个Promise。runPromisesInOrder
函数使用reduce
方法来顺序执行这些异步函数,并将每个函数的结果添加到一个数组中。最后,它返回一个Promise,该Promise在所有异步函数都完成后解析为一个包含所有结果的数组。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!