面试题答案
一键面试function runTasksConcurrently(tasks) {
return Promise.allSettled(tasks.map(task => {
return task().then(value => ({ status: 'fulfilled', value }))
.catch(error => ({ status:'rejected', reason: error }));
}));
}
// 示例用法
const tasks = [
() => Promise.resolve(1),
() => Promise.reject(new Error('任务2失败')),
() => Promise.resolve(3)
];
runTasksConcurrently(tasks).then(results => {
console.log(results);
});
上述代码实现了以下功能:
runTasksConcurrently
函数接受一个包含多个任务函数的类数组对象tasks
。- 使用
map
方法遍历tasks
数组,对每个任务函数调用并包装为Promise
,使用Promise.allSettled
并发执行所有任务。 - 每个任务成功时,返回
{ status: 'fulfilled', value }
,失败时返回{ status:'rejected', reason: error }
。 - 最终返回一个包含所有任务结果(成功值或错误信息)的数组。