面试题答案
一键面试function executePromises(promiseFuncs) {
return new Promise((resolve, reject) => {
const promises = promiseFuncs.map(func => func());
const racePromise = Promise.race(promises);
const allPromise = Promise.all(promises);
racePromise.then(() => {
allPromise.then(values => {
resolve(values);
}).catch(error => {
reject(error);
});
}).catch(error => {
// 取消其他正在进行的操作(这里无法直接取消,只是为了逻辑完整)
// 实际场景中可以使用 AbortController 等方式取消 Promise
reject(error);
});
});
}
你可以这样调用这个函数:
// 示例用法
const promiseFuncs = [
() => Promise.resolve(1),
() => Promise.resolve(2),
() => Promise.reject(new Error('操作失败'))
];
executePromises(promiseFuncs).then(result => {
console.log(result);
}).catch(error => {
console.error(error);
});