Promise
多重 Promise
可以使用 Promise 的 .then() 方法来链接多个 Promise,或者使用 Promise.all() 来等待多个 Promise 都完成。
.then()
使用 .then() 方法链式处理多个 Promise:
js
const firstPromise = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('First promise resolved');
}, 1000);
});
};
const secondPromise = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Second promise resolved');
}, 2000);
});
};
firstPromise()
.then((result) => {
console.log(result);
return secondPromise();
})
.then((result) => {
console.log(result);
});上面的代码首先等待第一个 Promise 完成,然后在它的 .then() 方法中处理第二个 Promise。
Promise.all()
使用 Promise.all() 等待多个 Promise 全部完成:
js
const promises = [
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 1 resolved');
}, 1000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 2 resolved');
}, 2000);
}),
new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Promise 3 resolved');
}, 1500);
}),
];
Promise.all(promises)
.then((results) => {
console.log(results);
})
.catch((error) => {
console.error(error);
});Promise.all() 会等待所有的 Promise 都完成,然后返回一个包含所有结果的数组。
错误处理
您可以在 Promise 链中使用 .catch() 方法来捕获任何 Promise 链中的错误。这通常放在 Promise 链的末尾,以捕获整个链中的错误。
js
someAsyncOperation()
.then((result) => {
// 处理成功的情况
})
.catch((error) => {
// 处理错误的情况
});