多重异步操作的优雅写法,为axios框架铺垫基础
一、Promise的介绍和基本使用
1.1 什么是Promise
- Promise是ES6中非常重要且非常好用的特性
- Promise是异步编程的一种解决方案,对异步操作变得优雅
- 异步操作一般用于网络请求
1.2 Promise基本使用
1 | //简单的异步操作 |
- 将上面的异步操作使用Promise进行封装
1 | /* 使用Promise封装异步操作 |
1.3 resolve和reject使用
1 | // resolve 和 reject 的使用 |
二、Promise基本使用补充
2.1 Promise三种状态
- pending:等待状态,比如正在进行网络请求,或者定时器没有到时间
- fulfill:满足状态,当我们主动回调了resolve时,就处于该状态,并且会回调.then()
- reject:拒绝状态,当我们主动回调了reject时,就处于该状态,并且会回调.catch()
2.2 resolve和reject的另一种写法
1 | //resolve和reject的另一种写法 |
三、Promise的链式调用
3.1 基本实现例子
1 | //需求:第一个异步操作后,再进行拼接字符 |
3.2 使用Promise静态方法
1 | //但是拼接字符串的操作并没有进行异步使用,不太需要创建一个新的Promise对象 |
3.3 最终简化
1 | //Promise官方还支持更加简洁的写法 |
3.4 reject简化
- reject的简化和resolve基本一样
1 | //(1) |
四、all方法
需求:一个处理需要发送两个请求才能开始处理
4.1 普通方法实现
1 | let resulet1 = false; //定义变量判断请求完成状态 |
4.2 使用Promise实现
1 | //用promise的all方法解决两个请求同时处理的问题 |