多个Promise相加

61 阅读1分钟

两个promise结果相加

const promise1 = new Promise((resolve, reject) => {
    setTimeout(() => resolve(2), 20);
});

const promise2 = new Promise((resolve, reject) => {
    setTimeout(() => resolve(5), 60);
});

// 用法1
const promiseAll = Promise.all([promise1, promise2]);
promiseAll.then((values) => {
    const sum = values.reduce((a, b) => a + b, 0);
    console.log(sum);
});

// 用法2
Promise.all([promise1, promise2]).then((values) => {
    const sum = values.reduce((a, b) => a + b, 0);
    console.log(sum); // 输出 7
});
// 自己实现函数
async function addPromises(promise1, promise2) {
    try {
        // 等待两个 Promise 对象都成功解析后,将结果解构为 res1 和 res2
        const [res1, res2] = await Promise.all([promise1, promise2]);
        // 返回两个结果之和
        return res1 + res2;
    } catch (error) {
        // 如果任一 Promise 对象出现错误,则捕获并输出错误信息
        console.error(error);
        // 将错误抛出,以便调用者可以处理
        throw error;
    }
}

addPromises(promise1, promise2);