Vue项目中,Async与Await设置多个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延时,方便查看执行顺序):
在这里插入图片描述


总结

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小辰哥哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值