请写一个合并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在所有异步函数都完成后解析为一个包含所有结果的数组。

posted @   王铁柱6  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示