vue async、promise异步请求和await运算符等待Promise 对象返回值,promise对象说明

最近,写代码遇到一个需要做异步请求的需求,今天做一个记录。
第一步,全局引入axios有可能不行,记得重新引入axios,我之前就忘记重新引入axios就报错了。

import { AXIOS } from '../../../utils/axios'

第二步,在methods,新建async 函数,需要多个函数需要用到await运算符(await 等到Promise 对象 resolve的值,作为 await 表达式的运算结果return给函数),得到返回值后就可对返回值做相应的处理,不要在Promise 对象里对data做相应的处理,return时有时会出现参数丢失。

created(){
    this.asyncFunction(id)
},
methods: {
    async asyncFunction(id){
    	var await1 =  await this.await1Function(id)
    	var await2 =  await this.await2Function(id)
    	console.log(await1)
    	console.log(await2)
    },
    await1Function:(id)=>{
      return new Promise((resolve, reject) => {
        AXIOS.post("地址", {id:id}).then((res) => {
          var list = res.data.list
          resolve(list) 
        }).catch(error => {
          // 失败返回
          resolve('失败返回')
        })
      })
    },
    await2Function:(id)=>{
      return new Promise((resolve, reject) => {
        AXIOS.post("地址", {id:id}).then((res) => {
          var list = res.data.list
          resolve(list) 
        }).catch(error => {
          // 失败返回
          resolve('失败返回')
        })
      })
    },
}

promise对象
1.1 promise对象可以获取异步操作的消息,可以解决异步中回调问题,自己不能进行异步。
1.2 promise有三种状态,pending (进行中),resolve (操作成功状态),rejected (操作失败)。
1.3promise不能逆向转向,只能从等待到完成或者拒绝状态
1.4then方法是promise的核心,then返回一个promise函数,而一个promise也可以多次调用then方法
1.5缺点:promise对象一旦执行了promise便无法中途取消,(当promise处于pending阶段的时候无法判断是开始还是结束的阶段,如果不设置回调函数,promise无法向外部抛出错误信息,一般来说,then回调函数的参数是resolve抛出的信息,catch回调函数的参数是reject和执行then抛出的错误信息,promise的内部错误不会影响外部错误,也就是说promise会吃掉函数。)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3.0 中,支持使用 Promiseasync/await 来处理异步操作。Vue 3.0 在对 Options API 进行重构的同时,也引入了 Composition API,这使得在组件中使用 Promiseasync/await 更加方便。 在 Vue 3.0 中,你可以使用 async/await 来编写异步操作。比如,你可以在组件的生命周期钩子函数中使用 async/await等待异步操作的完成,然后再继续执行其他逻辑。例如: ```javascript export default { async created() { try { const response = await fetch('https://api.example.com/data'); const data = await response.json(); // 处理获取到的数据 } catch (error) { // 处理错误 } } } ``` 在上面的例子中,我们使用了 async/await等待 fetch 请求的完成,并且将返回的数据解析为 JSON 格式。如果出现错误,我们也可以使用 try-catch 块来捕获并处理错误。 另外,Vue 3.0 还提供了一些便捷的方法来处理 Promise。比如,你可以使用 Vue 的 `$nextTick` 方法来等待 DOM 更新完成后再执行某些操作,而不需要手动创建 Promise。例如: ```javascript export default { methods: { async fetchData() { // 异步获取数据 await this.$nextTick(); // DOM 更新完成后执行某些操作 } } } ``` 上面的例子中,`fetchData` 方法中的 `this.$nextTick()` 返回一个 Promise,它会在 DOM 更新完成后 resolve。我们可以使用 await等待 DOM 更新完成后再执行某些操作。 总的来说,在 Vue 3.0 中,使用 Promiseasync/await 可以更方便地处理异步操作,使代码更加清晰和易于维护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值