侧边栏壁纸
  • 累计撰写 53 篇文章
  • 累计创建 12 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

什么是Promise

Kirito
2024-03-27 / 0 评论 / 0 点赞 / 18 阅读 / 2240 字 / 正在检测是否收录...

结论:一个带有 then方法的对象,就是一个Promise

Promise A+规范

在ES6(2015年)之前,为解决回调地狱与异步处理不统一的问题,民间开发组织提出了Promise A+规范,其中概述了“一个带有 then方法的对象,就是一个Promise”的概念,且具体描述了在 then方法中应该如何处理的规范。此规范被多个第三方库开发者采用,形成了初步的Promise规范。

// 带有then方法的对象
const newPromise = () => {
  then() {
    ...
  }
}

Promise构造函数

ES6根据Promise A+规范,提出了符合规范的Promise构造函数,可用过 new Promise()创建一个Promise对象,并在规范基础上,增加了多个方法与API。

// 声明一个Promise
const newPromise = new Promise()

// 方法
newPromise
.then(() => {})   // then方法,Promise运行成功后的异步回调
.catch(() => {})  // catch方法,Promise运行失败后的异步回调

// API
Promise.all([newPromise1, newPromise2, ...])   // 多个Promise均执行成功,才会调用then方法进入对应回调
Promise.race([newPromise1, newPromise2, ...])  // 多个Promise谁先执行完成,谁就调用对应方法进入回调
Promise.any([newPromise1, newPromise2, ...])   // 只要有一个Promise成功,就会调用then方法进入回调

// ES2020新增API
// 用于确认是否所有Promise均结束(无论成功失败)
// 返回一个对象数组,[{status: 'fulfilled' | 'rejected', val: error | resolved}]
Promise.allSettled([newPromise1, newPromise2, ...])
0

评论区