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

相关推荐
CoderCodingNo7 分钟前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
陳103014 分钟前
C++:红黑树
开发语言·c++
一切尽在,你来19 分钟前
C++ 零基础教程 - 第 6 讲 常用运算符教程
开发语言·c++
泉-java20 分钟前
第56条:为所有导出的API元素编写文档注释 《Effective Java》
java·开发语言
weixin_4997715540 分钟前
C++中的组合模式
开发语言·c++·算法
初级代码游戏40 分钟前
套路化编程 C# winform 自适应缩放布局
开发语言·c#·winform·自动布局·自动缩放
_waylau44 分钟前
鸿蒙架构师修炼之道-架构师的职责是什么?
开发语言·华为·harmonyos·鸿蒙
2的n次方_1 小时前
CANN Ascend C 编程语言深度解析:异构并行架构、显式存储层级与指令级精细化控制机制
c语言·开发语言·架构
大橙子额1 小时前
【解决报错】Cannot assign to read only property ‘exports‘ of object ‘#<Object>‘
前端·javascript·vue.js
java干货1 小时前
为什么 “File 10“ 排在 “File 2“ 前面?解决文件名排序的终极算法:自然排序
开发语言·python·算法