Vue前端异步方法

例子

java 复制代码
// 确认验证码
const clickSureCode=async()=>{
    let reslut = await UserSureCodeService(userInfo.value)
    console.log("异步后"+reslut.data)
    if(reslut.code === 0){
        ElMessage.success("邮箱验证成功")
        originEmail.value=reslut.value
        // 更改修改状态
        cancleEmail()
    }else{
        ElMessage.error(reslut.value)
    }

}

async()表示该方法是异步,await 表示在执行完UserSureCodeService 方法后,在执行接下来的console.log("异步后"+reslut.data )。如果不使用,这个data数据会是Undefine。

这里使用了Axios的简明写法。要使用Axios有以下步骤:

  1. npm install axios
  2. 在你的 JavaScript 文件中,使用 import 关键字引入 Axios。即import axios from 'axios';

可以在request中封装一系列方法。

java 复制代码
//导入axios  npm install axios
import axios from 'axios';
import{ElMessage} from 'element-plus'

import router from '@/router/router.js'
//定义一个变量,记录公共的前缀  ,  baseURL
const baseURL = '/api';
const instance = axios.create({baseURL})

//添加响应拦截器
instance.interceptors.response.use(
    result=>{
        if(result.data.code===0){
            return result.data;
        }
        ElMessage.error(result.data.message)
        // 异步操作转为失败
        return Promise.reject(result.data);
    },
    err=>{
    //如果响应状态码时401,代表未登录,给出对应的提示,并跳转到登录页
         if(err.response.status===401){
            ElMessage.error('请先登录!')
            // 跳转到登录
            router.push('/login')
        }else{
                ElMessage.error('服务异常');
            }
        return Promise.reject(err);//异步的状态转化成失败的状态
    }   
)

//导入token状态
import { useTokenStore } from '@/store/token.js';


//添加请求拦截器
instance.interceptors.request.use(
    (config)=>{
        //在发送请求之前做什么
        let tokenStore = useTokenStore()
        //如果token中有值,在携带
        if(tokenStore.token){
            config.headers.Authorization=tokenStore.token
        }
        return config
    },
    (err)=>{
        //如果请求错误做什么
        Promise.reject(err)
    }
)


export default instance;

这里封装了一个对象instance,它又Aixos创建而来,还给他添加了拦截器功能。

应用

java 复制代码
import request from  '@/utils/request.js'
 
// 登录
export const loginUserService=(registerData)=>{
    const params = new URLSearchParams()
    for (let key in registerData){
        params.append(key,registerData[key])
    }
    return request.post('/user/login',params)
}

首先导入request.js,utils是我自己的创建的包,这里只是路径而已。此时前端要访问后端方法路径,只需要request.post或request.get即可。

相关推荐
Rosanci7 小时前
从零到合入主线:我的 DeepSeek Harness 开源贡献实战手记
开发语言·前端·开源
用户960819842237 小时前
多周期联看时十字光标对不齐:前端排查「时间桶」的三步清单
前端
墨鱼老师7 小时前
SpringBoot+Vue 毕设项目开发踩坑记录(前后端分离)
vue.js·spring boot·毕业设计·课程设计·前后端分离·java 毕设
Data analyse4568 小时前
数据合规的敏感数据怎么识别?
前端·人工智能·数据分析
雪芽蓝域zzs8 小时前
Vue3 + Element Plus el-select 下拉弹窗
vue.js·elementui
陪我一起学编程8 小时前
vue3笔记
前端·webpack·vue3·vite·脚手架·vue3笔记·组件式
Wx-bishekaifayuan8 小时前
springboot房屋租赁系统11574-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·sql·spring·课程设计
小白的码BUG之路8 小时前
Docker -- 构建nginx镜像,启动vue项目
vue.js·nginx·docker
object not found8 小时前
WooCommerce 接入 KPay 后订单完成页不显示订单信息:returnUrl 动态参数问题解决
前端·wordpress·独立站支付
yume_sibai9 小时前
04-Nginx部署实战完全指南(前端部署 + 后端代理 + 监控告警 + 故障排查)
运维·前端·nginx