为什么要用async/await
- 使用async函数可以让代码简洁很多,不需要像Promise一样需要then,不需要写匿名函数处理Promise的resolve值,也不需要定义多余的data变量
- 代码是从上往下执行更符合传统的语法更优雅,还避免了嵌套代码
- 异步请求axios的API都是返回的promise对象
什么是async/await
- async:表示异步函数,异步函数也就意味着该函数的执行不会阻塞后面代码的执行
- await:表示同步,意思是等待,需要按照顺序执行
- 写异步代码的新方式,同回调函数和Promise
- 基于Promise实现的,不能用于普通的回调函数
- 异步非阻塞: A调用B,无需等待B的结果,B通过状态,通知等来通知A或回调函数来处理
- 使异步代码看起来相同步的
基本用法
- async 关键字用于函数上
- await 关键字用于async定义的函数当中,接在promise对象前面可以得到reslove或者reject的结果
- 通过await可以不用then直接的得到Promise对象resolve的结果
- 用try/catch 来捕获异常,把await 放到 try 中进行执行,如有异常,就使用catch 进行处理
async getAllList() {
try {
let result = await getOperateStatus();
let status = result.data;
this.refresh();
} catch (err) {
console.log(err);
}
}
Promise
ES6的Promise对象是一个构造函数,用来生成Promise实例
有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数
Promise对象的三种状态
pending(等待) 、resolve(接受)、reject(拒绝)和all(一次执行)、race(速度)
方法
- all统一执行完三个函数并将值存在一个数组里面返回给then进行回调输出
- then 方法两种参数:then的2个参数;onresolove(成功) 和 onreject(失败)