Promise 包含的属性

实例属性

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

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

实例方法

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

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

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

静态属性

  1. PromiseSymbol.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 非常适合需要等待多个不相关异步操作完成的场景,能够显著提高代码执行效率。

相关推荐
Brilliantwxx35 分钟前
【C语言】 初入嵌入式C语言复习(基础+进阶面试题)
c语言·开发语言
熊野君1 小时前
附录与 Codex 实操手册
开发语言·人工智能·产品经理
默_笙1 小时前
🔥 让 AI 帮我写完整个 Next.js 博客:框架就是 AI 的"上下文 buff"
前端·javascript
XZ-0700012 小时前
week2-1-可视化
开发语言·python
Java后端的Ai之路2 小时前
14、Python - 责任链模式
服务器·开发语言·人工智能·python·责任链模式
吴声子夜歌2 小时前
Java——基本类型
java·开发语言
「QT(C++)开发工程师」2 小时前
C++11 std::unique_ptr — 独占所有权的智能指针
c语言·开发语言·c++·qt
不正经学生3 小时前
C语言动态内存管理(上):堆上的自由与责任
c语言·开发语言·c++·算法·面试
AI情绪识别开源3 小时前
检信AI高一分班分科智选评估系统 v2.0测试报告
开发语言·数据结构·人工智能·科技
纯.Pure_Jin(g)3 小时前
靶场PHP函数整理+防御方式
开发语言·php·ctf