当前位置: 首页 > news >正文

关于axios同步获取数据的问题

axios同步获取数据

  • Axios介绍
  • 问题
    • 代码修改
  • 总结

Axios介绍

Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。

promise是处理异步调用的对象方法

问题

在axios中,调用是异步的,这就会出现需要的数据不能实时获取,导致程序出错。

在写代码时发现了异步调用出现的一些问题

import axios from 'axios'function getarticle(){return  axios.get('http://localhost:8080/article/getAll').then(result => {return  result.data}).catch(err => {console.log(err)})
}const articleGetAll =  function(){let data =  getarticle()articlelist.value = data;
};articleGetAll()
console.log(articlelist)

上面的代码是异步调用的,导致拿到的数据没有解构,还是promise对象,造成了显示上的错误
在这里插入图片描述

代码修改

要让代码变成同步的需要使用await(写在调用异步函数的前面, 这个关键字会一直等待返回的结果)。 async关键字和await配套使用,在使用到await的函数声明前要加上async关键字

async函数返回的是一个Promise对象,如果在函数中return一个值,async内部会调用Promise.resolve()帮你封装成一个Promise对象,如果async函数内部抛出错误,内部就会调用Promise.reject()返回Promise对象,在函数的外层不能用await关键字的时候,我们需要用.then()来处理Promise对象

在调用axios的地方加上await关键字,同时在对应函数上加async。但是这样的结果还是不对的,因为async函数返回的值是promise,这样得到的值还是promise对象
在这里插入图片描述
既然又变成了一个异步函数,那么就在调用时再套娃一次,加上await
在这里插入图片描述
成功显示
在这里插入图片描述
成功原因分析
在这里插入图片描述

总结

在使用异步变同步的时候,尽量不要使用async的返回值,因为返回值是promise对象
使用时应该在sync函数的内部调用await的地方等待数据解构,结构完成就能得到原始数据,再使用原始数据进行操作

http://www.lryc.cn/news/435935.html

相关文章:

  • java-在ANTLR中,如何从java文件中提取类名和方法名0.1.8
  • 十大护眼灯钢琴灯品牌是智商税吗?十大钢琴灯品牌排行榜
  • 搜维尔科技:CyberGlove将实时捕捉运动信号和触觉反馈,将其重新定位到人形机器人进行驱动
  • 数据结构:堆的算法
  • python画图|3D直方图基础教程
  • C语言中的函数,实参,形参,递归
  • ICM20948 DMP代码详解(15)
  • NC 和为K的连续子数组
  • JS设计模式之装饰者模式:优雅的给对象增添“魔法”
  • 准备好了吗?JAVA从业AI开发的学习路线详解
  • 神经网络通俗理解学习笔记(1)
  • 有n个人,他们需要分配m元钱(m>n),每个人至少分到1元钱,且每个人分到的钱数必须是整数。请问有多少种分配方案?
  • 光耦——创新引擎 助推中国经济高质量发展
  • Go 中 RPC 的使用教程
  • 挖耳勺可以伸进耳朵多深?安全可视挖耳勺推荐!
  • SuperMap GIS基础产品FAQ集锦(20240911)
  • 从状态管理到性能优化:全面解析 Android Compose
  • ChatGPT提示词优化大师使用指南
  • 计算机毕业设计 智能推荐旅游平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 【拥抱AI】基于多种数据分段工具的优缺点分析
  • 在 Windows 系统上,文件传输到虚拟机(VM)可以通过 VS Code 的图形界面(GUI)或命令行工具进行操作
  • kafka的主要功能
  • vue3中provide和inject详解
  • 相约华中科技大学,移动云技术论坛来了!NineData创始人CEO叶正盛将分享《数据库全球实时传输技术实践》的主题演讲
  • 华为 昇腾 310P 系列 AI 处理器支持 140Tops 的 AI 算力。
  • 基于单片机的小型生态鱼缸控制器设计
  • git-repo使用
  • 如何设计实现完成一个FPGA项目
  • Oracle(106)如何实现透明数据加密?
  • 用Python实现时间序列模型实战——Day 18: 时间序列中的季节性与周期性预测