promise 和async await是什么?
我们常用的与后端交互的axios插件是基于ajax封装的,ajax是一个异步的玩意,因此我们在使用axios的时候假如需要让接口按照先后顺序执行的话就需要到promise或者async await了。
promise
不多哔哔,直接进入主题,promise到底怎么玩?贴代码
let a = new Promise((resolve, reject) => {
var num = Math.ceil(Math.random() * 10);
if (num > 100) {
resolve("成功");
} else {
reject("失败,小于100");
}
})
.then((res) => {
console.log(res);//成功
})
.catch((res) => {
console.log(res);//失败,小于100
});
resolve()成功后的回调,可以将值传到.then()
reject()成功后的回调,可以将值传到.catch()
那么我怎么用promise将接口按照顺序执行呢?
无限嵌套.then()即可,这样能解决问题 但是很麻烦对吧???
因此 async await就出来了 解决了回调地狱的问题。
async await
直接贴代码 不多哔哔
// async await
async testBtn() {
await this.btnA();
await this.btnB();
},
btnA() {
console.log("a");
},
btnB() {
console.log("b");
},
输出结果 a,b
// async await
async testBtn() {
await this.btnB();
await this.btnA();
},
btnA() {
console.log("a");
},
btnB() {
console.log("b");
},
输出结果 b,a
通过async await 轻而易举的可以控制接口的执行顺序
就是这么简单,好用。结束!!