VUE获取Promise对象中PromiseResult中的数据(最新推荐)

 更新时间:2023年10月30日 11:33:58   作者:TTong___  
如果想要在接口请求方法的外面拿到请求的结果,再做相关数据处理,往往我们拿到的却是一个Promise对象,那么遇到这样的问题如何解决呢,下面小编给大家带来了VUE 项目中 如何获取Promise对象中的PromiseResult中的数据 ,感兴趣的朋友一起看看吧

VUE 项目中 如何获取Promise对象中的PromiseResult中的数据

问题描述

如果想要在接口请求方法的外面拿到请求的结果,再做相关数据处理,往往我们拿到的却是一个Promise对象,案例如下:

methods: {
  getInfoList(id) {
    let list = [];
    // 接口请求封装的方法
    list = infoStore(id)
    console.log('list :>> ', list);
  }
}

打印结果

可以看到,请求返回的值放在了Promise对象的PromiseResult中,但是直接取值又取不出来,这是因为:
Promise 简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果;
从语法上说, Promise 是一个对象,从中可以获取异步操作的消息;
所以想要直接获取到Promise对象的值,需要通过 async await 来获取

解决方案

通过 async await 来获取
async 用于申明一个function是异步的;而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的;
async/awiat的使用规则:

  • async和await要一起用;
  • async 表示这是一个async函数, await只能用在async函数里面,不能单独使用;
  • async 返回的是一个Promise对象,await就是等待这个promise的返回结果后,再继续执行;
  • await 等待的是一个Promise对象,后面必须跟一个Promise对象,但是不必写then(),直接就可以得到返回值;
async getShelfList(id) {
  letlist = [];
  list = await infoStore(id)
  console.log('list :>> ', list);
}

打印结果

总结

异步获取Promise对象的值还可以使用Promise对象的then方法,但是then方法是在接口请求对象的里面执行数据处理的操作

getShelfList(id) {
  let list = [];
  infoStore(id).then((res) => {
  	// res则为promise对象的返回的值,可以在then()方法里面做数据处理
    list = res.data
  })
}

两个方法使用场景不一样,可按个人情况择优使用

以上是个人经验,希望对大家有所帮助!

更新

当使用 async await 来获取Promise对象的值的时候,正常函数里是没有问题,但是放在forEach()循环里面会报错,对于这个问题,请参考另外以下文章,此文中将详细介绍forEach循环中不能使用async await异步调用的原因,以及不同循环中的使用方法:
如何在 for/forEach/map 循环里面使用异步调用 async/await

到此这篇关于VUE 如何获取Promise对象中的PromiseResult中的数据的文章就介绍到这了,更多相关vue 获取PromiseResult中的数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中实现路由跳转的三种方式超详细教程

    vue中实现路由跳转的三种方式超详细教程

    这篇文章主要介绍了vue中实现路由跳转的三种方式超详细教程,其中声明式router-link实现跳转最简单的方法,可用组件router-link来替代a标签,每种方式给大家讲解的非常详细需要的朋友可以参考下
    2022-11-11
  • vue子元素绑定的事件, 阻止触发父级上的事件处理方式

    vue子元素绑定的事件, 阻止触发父级上的事件处理方式

    这篇文章主要介绍了vue子元素绑定的事件, 阻止触发父级上的事件处理方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • vue easytable组件使用详解

    vue easytable组件使用详解

    Vue Easytable是一个基于Vue.js的数据表格组件库,它提供丰富的功能和灵活的配置,帮助开发者快速搭建复杂的数据表格界面,这篇文章主要介绍了vue easytable组件使用,需要的朋友可以参考下
    2023-09-09
  • vue动态路由加载时出现Cannot find module xxx问题

    vue动态路由加载时出现Cannot find module xxx问题

    这篇文章主要介绍了vue动态路由加载时出现Cannot find module xxx问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue3 中ref和reactive的区别讲解

    vue3 中ref和reactive的区别讲解

    如果在template里使用的是ref类型的数据, 那么Vue会自动帮我们添加.value,如果在template里使用的是reactive类型的数据, 那么Vue不会自动帮我们添加.value,这篇文章主要介绍了vue3 中ref和reactive的区别,需要的朋友可以参考下
    2022-12-12
  • 解决vue cli3使用axios跨域问题

    解决vue cli3使用axios跨域问题

    这篇文章介绍了解决vue cli3使用axios跨域问题,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • element自定义表单验证上传身份证正反面的实现

    element自定义表单验证上传身份证正反面的实现

    表单验证在很多地方都可以用的到,本文主要介绍了element自定义表单验证上传身份证正反面的实现,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Vue实现回到顶部和底部动画效果

    Vue实现回到顶部和底部动画效果

    这篇文章主要为大家详细介绍了Vue实现回到顶部和底部动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • vue的axios使用post时必须使用qs.stringify而get不用问题

    vue的axios使用post时必须使用qs.stringify而get不用问题

    这篇文章主要介绍了vue的axios使用post时必须使用qs.stringify而get不用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • vue实现滑块拖拽校验功能的全过程

    vue实现滑块拖拽校验功能的全过程

    vue验证滑块功能,在生活中很多地方都可以见到,使用起来非常方便,这篇文章主要给大家介绍了关于vue实现滑块拖拽校验功能的相关资料,需要的朋友可以参考下
    2021-08-08

最新评论