等待axios请求的返回值来使用

发布时间 2023-10-28 10:47:07作者: 漫漫长路

 

我们只要关心代码里面的asyncawait就行了

//api
import sysConfig from '@/api/systemManagement/config'


    async getSysConfigInfo(id:number|string){
            const coolieValue= cookies.get("setup_sysmConfigManage_time")
            if(!coolieValue){
                // 如果不存在就设置时间
                await sysConfig.sysConfigList({currentPage:1,perPage:1000}).then(res=>{
                    // 测试可以设置成10秒,把4h改成10s
                    cookies.set("setup_sysmConfigManage_time", "config", "10s")
                     //保存在本地
                    localStorage.setItem("setup_sysmConfigManage_time",JSON.stringify(res.data.data.data))
                    this.data=res.data.data.data
                    this.item=res.data.data.data.find((ele:any)=>{return ele.AutoInc===id})
                    
                    console.log('4小时后更新1111',this.data,this.item)
                })
                return this.item
            }else{
                let currencyN:any=localStorage.getItem("setup_sysmConfigManage_time")
                this.data=JSON.parse(currencyN)
                if(this.data){
                    this.item=this.data.find((ele:any)=>{return ele.AutoInc===id})
                    console.log(this.data,'ccc',this.item)
                    return this.item
                }else{
                    return 0
                }
            }
           
        },



//重点
// 在vue使用方式  

// 导入
// import {useCookie} from '@stores/cookie'
//const useCookieStore:any =useCookie()

// 等待异步问题
// async function getDataItem() {
//     try {
    // dataItem就是获取的项
//       const dataItem = await useCookieStore.getSysConfigInfo(2);
//       console.log(dataItem,'aaareturn');
//       // 在这里处理获取到的dataItem
//     } catch (error) {
//       console.error(error);
//       // 处理错误情况
//     }
//   }

// 在需要的地方调用
//     getDataItem();

 

 

api里面的方法,下面这些都是参考的,不重要的

import request from "@/utils/request";

/**
 * 获取配置信息列表
 */
 function sysConfigList(data:Object){
    return request.post('sysConfigList',data)
}

/**
 * 获取配置信息
 */
function getSysConfig(id:string|number){
    return request.get('getSysConfig/'+id)
}



// 修改配置信息
function updateSysConfig(id:string|number,data:Object){
    return request.put('updateSysConfig/'+id,data)
}

// 批量修改系统配置
function batchUpdateSysConfig(data:Object){
    return request.post('batchUpdateSysConfig',data)
}


export default{
    sysConfigList,
    getSysConfig,
    updateSysConfig,
    batchUpdateSysConfig
}

request文件

import axios from 'axios'
import router from '@/routers/router'



const request = axios.create({
    baseURL:'/api',
    timeout:600000,
    headers:{'Content-Type':'application/json;charset=utf-8','Authorization':`Bearer '+${localStorage.getItem('userToken_ERP')}`}
})



// 请求拦截器,在每个请求前添加token
request.interceptors.request.use(
    (config)=>{
        const token = localStorage.getItem('userToken_ERP')
        if(token){
            if(config && config.headers){
                config.headers.Authorization=`Bearer ${token}`;
            }
        }else{
            
        }
        return config;
    },
    (error)=>{
        return Promise.reject(error);
    }
)

// 响应拦截器,如果请求返回401,说明token失效或未授权,则跳转到登录页
request.interceptors.response.use(
    (response)=>{
        return response
    },
    (error)=>{
        const code =error.response ? error.response.status : null
        if(code === 401){
            console.log(error.response.status,'401')
            router.push("/login")
        }
        return Promise.reject(error)
    }
)







export default request