Promise 包含的属性

实例属性

  1. Promise.prototype.constructor - 创建实例对象的构造函数

  2. Promise.prototype[Symbol.toStringTag] - 用于 Object.prototype.toString(),值为 "Promise"

实例方法

  1. then(onFulfilled, onRejected) - 附加兑现和拒绝处理器,返回新 Promise

  2. catch(onRejected) - 附加拒绝处理回调函数,返回新 Promise

  3. finally(onFinally) - 附加处理器,无论 Promise 状态如何都会执行

静态属性

  1. 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: 失败
  });
  1. Promise.all(iterable) - 等待所有 Promise 完成

  2. Promise.allSettled(iterable) - 等待所有 Promise settled

  3. Promise.any(iterable) - 等待任一 Promise 兑现

  4. Promise.race(iterable) - 等待第一个 settled 的 Promise

  5. Promise.resolve(value) - 返回已解决的 Promise

  6. Promise.reject(reason) - 返回已拒绝的 Promise

  7. Promise.try(callback) - 包装任意回调函数结果为 Promise

  8. Promise.withResolvers() - 返回包含 Promise 和 resolve/reject 函数的对象

    Promise.all 详解

    基本语法

    javascript 复制代码
    Promise.all(iterable)

    特点

  9. 并发执行:同时处理多个异步操作

  10. 快速失败:任一 Promise 拒绝则立即拒绝

  11. 顺序保持:结果数组顺序与输入 Promise 顺序一致

Promise.all 非常适合需要等待多个不相关异步操作完成的场景,能够显著提高代码执行效率。

相关推荐
低调小一18 小时前
Kotlin 2025–2026 客户端开发路线:语言升级 × 跨端落地 × AI Agent 入门
开发语言·人工智能·kotlin
大阳光男孩18 小时前
ElementUI表格懒加载子级更新数据刷新不生效问题
前端·javascript·elementui
wy31362282118 小时前
C#——意框架(结构说明)
前端·javascript·c#
研☆香18 小时前
JS中的三种显示弹窗
开发语言·前端·javascript
王夏奇18 小时前
python中的基础知识点-1
开发语言·windows·python
叫我辉哥e118 小时前
新手进阶Python:办公看板集成多数据源+ECharts高级可视化
开发语言·python·echarts
猛扇赵四那边好嘴.18 小时前
Flutter 框架跨平台鸿蒙开发 - 问答社区应用开发教程
开发语言·javascript·flutter·华为·harmonyos
C_心欲无痕18 小时前
Next.js 路由系统对比:Pages Router vs App Router
开发语言·前端·javascript
LawrenceLan18 小时前
Flutter 零基础入门(二十二):Text 文本组件与样式系统
开发语言·前端·flutter·dart
kylezhao201918 小时前
C# 各种类型转换深入剖析
开发语言·c#