promise小记
1 promise 程序执行的特点
- 1: new Promise中的回调函数是同步执行的
- 2: 原型方法的回调函数,都是异步执行的, 属于异步消息队列中的微任务.
2 promise有三种状态
- pending
- resolve/ fulfilled 已接收
- reject 已拒绝
peomise api 分类
- 原型api
- 静态pai
- 所有的api执行后返回值都是 新的promise实例, 只要是 promise实例就可以使用原型方法
- 静态方法:只能同构Promise构造函数使用
原型方法
原型方法,通常是由,promise实例对象触发.
分类
- then 监听primise实例状态的变更, 主要监听变为已接收
- catch 监听promis实例 已拒绝的状态
- finally 监听链式调用中最后的一个状态
原型方法还吃链式调用,原型方法的callback 是异步执行的,属于微任务
.thenCallback
- 1: 触发条件 当prmise状态变为 fulfilled
- 2: 形参来源 resolve函数实参 或者 上一个then return
静态方法
- Promise.all() 同时剪监听多个promise实例的状态变更,所有promise都变为 fullild (已接收) 执行 特all-then-callback,有一个拒绝执行catch-callback
- 我经常用于处理并发业务.例如,同时发送多个请求,等所有请求成功后,在处理.
- 多张图片上传
Promise.all 捕获 reject 不是绝对的.如果单个prmise中;捕获了catch, Promise.all 不会捕获catch
Promise.all()
参数:数组;数组元素是promise 实例
返回:新的prmise
.thenCallback
1:所有prmie都变为 resolve
2:形参 数组, 数组元素 resove 实参.
- Promise.race() 监听多个promise实例状态,第一个发生状态变更的,如果是 fullid(已接收),执行 race-then-callback 如果是reject 执行race-catch-callback
- Prmise.any() 监听多个promise实例的状态, 只要有一个 变为
fulfilled
(已接收) 执行 any-then-callback 全部reject执行 any-catch-callback - Promise.resolve() 相当于在 new Promise中执行 resolve
- Promise.reject() 相当于在 new Promise 执行 reject
promise 应用
只要是异步程序都可以使用promise. 例如 发送网略请求.
解决异步bug ,—> 异步问题同步化.
特点:
- 优点将传统的回调函数实现异步.变为 .then的链式调用
- 确定 then 可以一直执行, 并且也也没有提高太大的代码可读性