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

Vue 使用Ajax异步或同步

一、使用Axios动态加载员工列表数据

  1、运行页面效果

 2、单击查询显示所有的数据

3、 再通过姓名,性别,职位分别查询数据

4、单击清空按钮,查询字段恢复原来状态,那就是显示所有的数据

 5、JS代码片段

<!-- 引入axios.js --><script src="https://unpkg.com/axios/dist/axios.min.js"></script><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'createApp({data() {return {findForm: {name: '',gender: '',position: ''},users: [] // 用于存储查询结果的用户数据数组};},methods: {showMessage() {// 这里可以添加实际的查询逻辑axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`).then(response => {this.users = response.data.data;}).catch(error => {console.error('查询用户数据失败:', error);})},// 清空查询表单clearForm() {this.findForm = {name: '',gender: '',position: '',}this.showMessage(); // 清空后重新查询,获取所有用户数据}}}).mount('#app');</script>

说明:使用axios中提供的.then(function(){....}).catch(function(){....}),这种回调函数的写法,会使得代码的可读性和维护性变差。

解决:可以通过async、await可以让异步变为同步操作

async:声明一个异步方法,await:等待异步任务执行。

 如下操作:(代码修改后就变成同步操作了,也就是从前往后一行一行执行。)

methods: {async showMessage() {// 这里可以添加实际的查询逻辑let response= await axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`)this.users = response.data.data;},

注意:await关键字只在async函数内有效,await关键字取代then函数,等待获取到请求成功的结果值 

二、Vue生命周期

1、它是vue对象从创建销毁的过程

 2、它的8个阶段:

       每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。

生命周期阶段钩子函数触发时机典型应用场景
创建阶段beforeCreate实例初始化后,数据观测/事件配置前插件初始化、非响应式变量设置
created实例创建完成(数据观测/方法可用,DOM未生成)异步请求数据、初始化非DOM相关操作
挂载阶段beforeMount模板编译完成,虚拟DOM已创建但未渲染最后修改渲染数据(不会触发重新渲染)
mounted实例挂载到真实DOM后操作真实DOM、初始化第三方库(如ECharts)
更新阶段beforeUpdate数据变化后,虚拟DOM重新渲染前获取更新前的DOM状态(慎改数据)
updated虚拟DOM重新渲染并应用更新后依赖新DOM的操作(如调整插件尺寸)
销毁阶段beforeDestroy实例销毁前(仍完整可用)清除定时器、解绑事件、销毁全局监听
destroyed实例销毁后(所有绑定和子实例已移除)释放非Vue管理的资源(如手动创建的DOM事件)

生命周期图示:

 mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。

一般用于页面初始化自动的ajax请求后台数据

如果想在页面加载完毕,就能列出所有员工数据,就可以在mounted钩子函数中,发送异步请求查询员工数据了。

     methods: {async showMessage() {// 这里可以添加实际的查询逻辑let response= await axios.get(`https://webserver.ma.net/emps/list?name=${this.findForm.name}&gender=${this.findForm.gender}&job=${this.findForm.position}`)this.users = response.data.data;},// 清空查询表单clearForm() {this.findForm = {name: '',gender: '',position: '',}this.showMessage(); // 清空后重新查询,获取所有用户数据}},mounted() {this.showMessage(); // 页面加载完成后,自动查询所有用户数据}

运行:

http://www.dtcms.com/a/264692.html

相关文章:

  • Node.js v22.5+ 官方 SQLite 模块全解析:从入门到实战
  • LeetCode 377.组合总和IV
  • 【算法】动态规划:python实现 2
  • 【APB协议时序及示例】
  • 2025美国券商交易系统综合开发及解决方案报告:低延迟、全球化与代币化技术赋能机构业务新生态
  • 摄像头AI智能识别工程车技术及应用前景展望
  • 武汉大学机器人学院启航:一场颠覆性的产教融合实验,如何重塑中国智造未来?
  • 【seismic unix数据处理--suvcat】
  • drawRect 触发时机
  • [特殊字符] Excel 提取+图片批量插入 | Python 自动化生成稽查报告 Word 模板
  • ubuntu 22.04 LTS 安装preempt-rt
  • pytorch底层原理学习--JIT与torchscript
  • 开机自动后台运行,在Windows服务中托管ASP.NET Core
  • 企业培训笔记:SpringBoot+MyBatis项目中实现分页查询
  • GraphPrompts:图神经网络领域的提示工程范式革新者
  • 学习笔记(28):随机噪声的原理、作用及代码实现详解
  • CC - Link IE转EtherCAT:石油石化软启动器的“最佳搭子”
  • 电商项目实例:基于Python京东商品API接口数据采集
  • 跨越传统界限:ChatGPT+ENVI/Python/GEE集成实战,覆盖无人机遥感、深度学习、洪水监测、矿物识别填图、土壤含水量评估等
  • 【Web前端】优化轮播图展示(源代码)
  • MDK(Keil MDK)工具链
  • cmake find_package
  • C++ 创建动态库及两种方法调用动态库
  • DINO 浅析
  • 医学+AI教育实践!南医大探索数据挖掘人才培养,清华指导发布AI教育白皮书
  • HarmonyOS应用开发高级认证知识点梳理 (四)状态管理V2应用级状态
  • AutoGen-AgentChat-1-整体了解
  • NestJS 系列教程(一):认识 NestJS 与项目初始化
  • RabbitMQ 高级特性之持久性
  • OpenCV仿射变换详解