📅  最后修改于: 2023-12-03 15:16:15.045000             🧑  作者: Mango
在 JavaScript 编程中,我们经常需要等待多个承诺完成后才能执行下一步操作。本文将介绍有关 JavaScript 处理多个承诺的技巧。
JavaScript 的承诺是处理异步操作的一种方式。承诺表示一个异步操作的最终结果。通常使用 new Promise()
创建承诺。承诺的构造函数接受一个执行函数,该函数接受两个参数:一个 resolve
函数和一个 reject
函数。resolve
函数表示承诺成功完成,reject
函数表示承诺失败。例如:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('承诺成功');
}, 1000);
});
如果要等待多个承诺完成,可以使用以下方法。
Promise.all
方法接受一个承诺数组,返回一个新的承诺,该承诺将在所有承诺都成功完成时解析,否则将被拒绝。如果有任何承诺被拒绝,则该承诺将被拒绝,并返回第一个拒绝的承诺的理由。例如:
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('承诺1成功');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('承诺2成功');
}, 2000);
});
Promise.all([promise1, promise2])
.then(results => {
console.log(results); // ['承诺1成功', '承诺2成功']
})
.catch(error => {
console.error(error); // 如果 promise1 或 promise2 被拒绝,则会在此处将其拒绝的原因打印出来。
});
Promise.race
方法接受一个承诺数组,返回一个新的承诺,该承诺将在第一个承诺成功完成时解析,否则将被拒绝。例如:
const promise1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('承诺1成功');
}, 1000);
});
const promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('承诺2成功');
}, 2000);
});
Promise.race([promise1, promise2])
.then(result => {
console.log(result); // '承诺1成功'
})
.catch(error => {
console.error(error); // 如果 promise1 和 promise2 都被拒绝,则会在此处将其拒绝的原因打印出来。
});
JavaScript 中的承诺是处理异步操作的一种方式。Promise.all
和 Promise.race
方法可以让我们轻松地等待多个承诺完成或找到最先完成的承诺。