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