1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Vue项目中 Async与Await设置多个Axios异步请求的执行顺序

Vue项目中 Async与Await设置多个Axios异步请求的执行顺序

时间:2023-03-19 18:28:06

相关推荐

Vue项目中 Async与Await设置多个Axios异步请求的执行顺序

文章目录

*Vue项目中,Async与Await设置多个Axios异步请求的执行顺序*1.详解Async与AwaitAsyncAwait 2.设置多个Axios异步请求的执行顺序总结

Vue项目中,Async与Await设置多个Axios异步请求的执行顺序

1.详解Async与Await

Async

(1)先说一下async的用法,它作为一个关键字放到函数前面,用于表示函数是一个异步函数,因为async就是异步的意思,异步函数也就意味着该函数的执行不会阻塞后面代码的执行。async 函数返回的是一个promise 对象,如果要获取到promise 返回值,我们应该用.then方法。

(2)如果async 函数中有返回一个值,当调用该函数时,内部会调用Promise.resolve() 方法把它转化成一个promise 对象作为返回,但如果函数内部抛出错误, 那么就会调用Promise.reject() 方法返回一个promise 对象。

Await

(1)await是等待的意思,那么它等待什么呢,它后面跟着什么呢?其实它后面可以放任何表达式,不过我们更多的是放一个返回promise 对象的表达式。注意await 关键字只能放到async 函数里面。

(2)async 和 await 基于 promise 的。 使用 async 的函数将会始终返回一个 promise 对象。 这一点很重要,要记住,这可能是你遇到的容易犯错的地。在使用 await 的时候我们暂停了函数,而非整段代码。async 和 await 是非阻塞的。你仍然可以使用 Promise 例如 Promise.all()。

2.设置多个Axios异步请求的执行顺序

template模块:

<el-button round @click="selectAll">获取全部数据</el-button>

script模块:

export default {name: 'vue_project',methods: {async selectAll() {console.log(await this.selectAll1());this.selectAll2();},selectAll1() {return new Promise((resolve, reject) => {// 第一Axios请求this.$axios({url: '/StandardController/selectAll1',method: 'POST'}).then(data => {if (data.data.success) {setTimeout(() => {resolve("第一Axios请求");}, 2000)}}).catch(error => {this.$message({message: '网络连接异常', type: 'error'});})});},selectAll2() {// 第二Axios请求this.$axios({url: '/StandardController/selectAll2',method: 'POST'}).then(data => {if (data.data.success) {console.log("第二Axios请求");}}).catch(error => {this.$message({message: '网络连接异常', type: 'error'});})}}}

开始测试1:

开始测试2(去掉setTimeout延时,方便查看执行顺序):

总结

每天一个提升小技巧!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。