Vue 使用Ajax异步或同步

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

1、运行页面效果

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

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

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

5、JS代码片段

java 复制代码
<!-- 引入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:等待异步任务执行。

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

java 复制代码
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钩子函数中,发送异步请求查询员工数据了。

java 复制代码
     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(); // 页面加载完成后,自动查询所有用户数据
            }

运行:

相关推荐
Mintopia1 小时前
Web 安全与反编译源码下的权限设计:构建前后端一体的信任防线
前端·安全·编译原理
林深现海1 小时前
Jetson Orin nano/nx刷机后无法打开chrome/firefox浏览器
前端·chrome·firefox
黄诂多1 小时前
APP原生与H5互调Bridge技术原理及基础使用
前端
前端市界1 小时前
用 React 手搓一个 3D 翻页书籍组件,呼吸海浪式翻页,交互体验带感!
前端·架构·github
文艺理科生1 小时前
Nginx 路径映射深度解析:从本地开发到生产交付的底层哲学
前端·后端·架构
千寻girling1 小时前
主管:”人家 Node 框架都用 Nest.js 了 , 你怎么还在用 Express ?“
前端·后端·面试
C澒2 小时前
Vue 项目渐进式迁移 React:组件库接入与跨框架协同技术方案
前端·vue.js·react.js·架构·系统架构
清山博客2 小时前
OpenCV 人脸识别和比对工具
前端·webpack·node.js
要加油哦~2 小时前
AI | 实践教程 - ScreenCoder | 多agents前端代码生成
前端·javascript·人工智能
程序员Sunday2 小时前
说点不一样的。GPT-5.3 与 Claude Opus 4.6 同时炸场,前端变天了?
前端·gpt·状态模式