概念
抽象表达
- promise 是用来解决异步编程(callback)回调地狱(callback hell)的一个解决方案
具体表达
- 从语法上来说:promise 是一个构造函数
- 从功能上来说:promise 是对象封装了一个异步操作并且能获取到其结果
状态
Promise 三种状态
- pending
- fulfilled
- rejected
有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
基础 api
1 | //new Promise 实例 |
常用方法
- then
- catch
- all
- any
- finally
- resolve 构造方法
- reject 构造方法
all
Promise.all([p1,p2,p..])
接收一个由 promise 组成的数组,成功将返回所有 promise 成功的结果,有一个状态是 reject 将执行 catch
race
Promise.race([p1,p2,p…])
接收一个由 promise 组成的数组,有一个 promise 状态是 resolve,那么就返回第一个状态是 resolve 的 promise 的结果
为什么使用 Promise
1、指定回调函数的方式更加灵活、
- 旧的:必须在启动异步任务前指定
- promise:启动异步任务 => 返回 promise 对象 => 给 promise 对象绑定回调函数(甚至可以异步任务结束后指定/多个)
2、支持链式调用,可以解决回调地狱问题
- 什么是回调地狱 ? 回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调函数执行的条件
- 回调地狱的缺点 ? 不便于阅读 / 不便于异常处理
- 解决方案 ? promise 链式调用
- 终极解决方案 ?async/await
I'm so cute. Please give me money.
- Post link: https://blog.gaocaipeng.com/2019/03/01/duw2vt/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.