关于async-await:vue项目asyncawait封装axios请求

装置axios

npm install axios --save

创立http.js文件

import axios from "axios"
/* 申请拦截器 */
axios.interceptors.request.use(
    config => {
        /* 增加token */
        let token = localstorage.getItem("token") || "";
        if(token){
            config.headers["token"] = token
        }
        return config;
    },
    error => {
        return Promise.reject(error)
    }
)

export const http = (url,params,method='GET',type='json') =>{
    /* 设置工夫随机数,解决申请缓存问题 */
    let _t = new Date().getTime();
    if(method == 'GET' || method == 'get'){
        if(params){
            params._t = _t
        }else{
            params={ _t }
        }
    }
    /* 设置申请头 */
    if (method === "POST") {
        if (type == "json") {
          //参数是json类型
         axios.defaults.headers.post["Content-Type"] =
         "application/json;charset=UTF-8";
      } else {
        //参数是字符串类型
        axios.defaults.headers.post["Content-Type"] =
          "application/x-www-form-urlencoded";
        // params = Qs.stringify(params);
      }
    }
    
    /* 发送申请 */
    return new Promise((resolve,reject) => {
        axios({
            url,
            method,
            type,
            data:method != "GET" ? params : null,
            params:method == "GET" ? params : null
        })
            .then(result => {
                /* 此处能够全局解决接口非凡状态码,比方token生效等 */
                resolve(result.data)
            })
            .catch(error => {
                reject(error)
            })
    })
}

/* await to js */
export const to = promise => {
    return promise.then(res => [null,res]).catch(error => [error])
}

创立api.js文件,设置接口申请解决

import { http, to } from "./http";

//  ---- 全局接口 -----
export const ceshiList = params => {
  return to(http("json/ceshi.json", params, "GET"));
};

api应用

import { ceshiList } from "@/http/api.js";
methods:{
    async getList(){
        let [err, res] = await ceshiList();
        if (!err) {
          if (res.result.code == 200) {
            /* 接口申请正确处理 */
            console.log(res);
          }
        }
    }
}

转化blob返回的数据

const render = new FileReader();
render.onload = function(){
    let jsonData = JSON.parse(render.result)
}
render.readAsText(data)

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理