promise 是什么?
1.抽象表达:是一门新的技术,是js中进行异步编程的新的解决方案
(异步编程(操作)包括):
* fs文件操作
* 数据库操作
* ajax
* 定时器等
2.具体表达:
1.从语法上来讲 是一个构造函数
2.从功能上来讲的话 就是用来封装一个异步操作并且可以获取成功或者失败的结果值
promise 程序执行的特点
1. new promise中的回调函数是同步执行的
2.原型方法中的回调函数,都是异步执行的,属于异步消息队列中的微任务
promise有三种状态
- pending 进行中 初始状态 既没有被实现 也没有被拒绝
- resolve/fulfilled 已接受 意味着操作完成
- reject 已拒绝 意味着操作的失败
promise api 分类
- 静态api
- 原型api
- 所有的api执行后返回值都是新的promise实例,只要是promise实例就可以使用原型方法
- 静态方法只能同promise构造函数使用
原型方法
原型方法通常是由promise实例对象触发。
分类
- then 监听promise实例对象的变更 主要监听变为已接受
- catch 监听promise实例已拒绝的状态
- finally 监听链式调用中最后的一个状态
注:原型方法还支持链式调用 原型方法的callback是异步执行的,属于微任务
.thenCallback
- 触发条件 当promise状态变为 fulfilled
- 形参来源 resolve 函数形参 或者上一个then return
静态方法
- promise.all()同时监听多个promise实例的状态变更,所有的promise都变为已接收
> promise.all捕获reject不是绝对的 如果单个promise中 捕获了catch,promise.all不会捕获catch
promise 应用
> 只要是异步程序都可以使用promise 例如 发送网络请求
> 解决异步bug,----> 异步问题同步化
特点
- 优点将传统的回调函数实现异步变为.then的链式调用
- 确定 then 可以一直执行 并且也没有提高太大的代码可读性