实例属性
-
Promise.prototype.constructor - 创建实例对象的构造函数
-
Promise.prototype[Symbol.toStringTag] - 用于
Object.prototype.toString(),值为"Promise"
实例方法
-
then(onFulfilled, onRejected) - 附加兑现和拒绝处理器,返回新 Promise
-
catch(onRejected) - 附加拒绝处理回调函数,返回新 Promise
-
finally(onFinally) - 附加处理器,无论 Promise 状态如何都会执行
静态属性
- Promise[Symbol.species] - 返回用于构造返回值的原生构造函数
静态方法
javascript
async function getData() {
const [users, posts, comments] = await Promise.all([
fetchUsers(),
fetchPosts(),
fetchComments()
]);
return { users, posts, comments };
}
Promise.all 非常适合需要等待多个不相关异步操作完成的场景,能够显著提高代码执行效率。
使用示例
javascript
const promise1 = Promise.resolve(3);
const promise2 = 42;
const promise3 = new Promise((resolve, reject) => {
setTimeout(resolve, 100, "foo");
});
Promise.all([promise1, promise2, promise3]).then((values) => {
console.log(values); // [3, 42, "foo"]
});
错误处理
javascript
const p1 = Promise.resolve(33);
const p2 = Promise.reject(new Error("失败"));
Promise.all([p1.catch(err => err), p2.catch(err => err)])
.then(values => {
console.log(values[0]); // 33
console.log(values[1]); // Error: 失败
});
-
Promise.all(iterable) - 等待所有 Promise 完成
-
Promise.allSettled(iterable) - 等待所有 Promise settled
-
Promise.any(iterable) - 等待任一 Promise 兑现
-
Promise.race(iterable) - 等待第一个 settled 的 Promise
-
Promise.resolve(value) - 返回已解决的 Promise
-
Promise.reject(reason) - 返回已拒绝的 Promise
-
Promise.try(callback) - 包装任意回调函数结果为 Promise
-
Promise.withResolvers() - 返回包含 Promise 和 resolve/reject 函数的对象
Promise.all 详解
基本语法
javascriptPromise.all(iterable)特点
-
并发执行:同时处理多个异步操作
-
快速失败:任一 Promise 拒绝则立即拒绝
-
顺序保持:结果数组顺序与输入 Promise 顺序一致
Promise.all 非常适合需要等待多个不相关异步操作完成的场景,能够显著提高代码执行效率。