vue项目使用async await 封装 axios

es8的async await让异步变成了同步的写法,在vue中,可以通过封装axios,使得所有的请求都可以使用同步的写法。

新建一个api.js文件,全局创建api实例

import axios from ‘axios‘
const qs = require(‘qs‘)
const api = {
  async get (url, data) {
    try {
      let res = await axios.get(url, {params: data})
      res = res.data
      return new Promise((resolve) => {
        if (res.code === 0) {
          resolve(res)
        } else {
          resolve(res)
        }
      })
    } catch (err) {
      alert(‘服务器出错‘)
      console.log(err)
    }
  },
  async post (url, data) {
    try {
      let res = await axios.post(url, qs.stringify(data))
      res = res.data
      return new Promise((resolve, reject) => {
        if (res.code === 0) {
          resolve(res)
        } else {
          reject(res)
        }
      })
    } catch (err) {
      // return (e.message)
      alert(‘服务器出错‘)
      console.log(err)
    }
  },
}
export { api }

使用可以参考如下

  import { api } from ‘common/js/api‘
  export default {
    data () {
      return {
        list: [],
      }
    },
    created () {
      this.getList()
    },
    methods: {
      async getList () {
        let {data} = await api.get(‘/test/list‘)
        console.log(data)
        this.list = data
      }
    },
  }

原文地址:https://www.cnblogs.com/lhy-555/p/10905419.html

时间: 2024-10-29 09:24:36

vue项目使用async await 封装 axios的相关文章

在vue中使用async/await遇到的坑

最近无聊在搞一些新的东西,今天就遇到一个async/await的坑: 因为我用的不是vue官方的脚手架,所以遇到这样的问题: await is a reserved word 这样的警告,我猜应该是缺乏相关的解析器. 然后取掉await之后,又出现async出现问题: 好吧,只能google之. 查到相关资料后: 安装了babel-plugin-transform-runtime还有babel-runtime,并在.babelrc文件里添加:"plugins":["trans

vue中使用async/await的实践

一.前言 在项目中经常遇到处理异步请求的情况,面对层层的嵌套,回调显示那么苍白无力: async / await是ES7的重要特性之一,也是目前社区里公认的优秀异步解决方案,既然这样就用上吧. 二.配置编译 网上实践很多... 反倒是Promise在实践过程中加了一个polyfill. 三.实践 await后方法要写成peomise的形式,大概如下,这样异步操作看起来就像同步操作一样明了. 原文地址:https://www.cnblogs.com/leaf930814/p/8502541.htm

vue项目常用之二:封装 axios 请求模块

/** * 封装 axios 请求模块 */ import axios from 'axios' import jsonBig from 'json-bigint' import store from '@/store' import router from '@/router' import { Notify } from 'vant' // axios.create 方法:复制一个 axios const request = axios.create({ baseURL: 'http://t

vue项目封装axios并访问接口

1.在src下新建util文件夹,在util下新建request.js文件: 封装axios: import axios from 'axios' import QS from 'qs'; // import store from '@/store/index.js'; import { Message } from 'element-ui'; //element库的消息提示,可以不用 // 环境的切换 // if (process.env.NODE_ENV == 'development')

Vue中的async和await的使用

async和await 在Vue中如果某个方法的返回值是Promise对象那么我们可以使用async和await来简化这次Promise操作 注:await只能用在被async修饰的方法中 没有使用async和await login(){ this.$refs.loginFormRef.validate( valid =>{ console.log(valid); if (!valid) return; const result= this.$axios.post("login/login

vue项目axios请求接口,后端代理请求接口404,问题出现在哪?

在vue项目中,列表数据需要用到qq音乐接口中的数据,但是直接请求不行,有host及referer限制,需要采用后端代理的方式.借助axios及node的express,在dev-server.js中实现后,重启项目,结果接口404了.代码如下: 仔细检查后,代码没问题:于是在apiRouts中console.log()打印信息,运行没有打印信息,意味着根本没有运行这部分代码.于是想到会不会是webpack版本更新,配置发生了改变导致的.所以仔细看了配置后,发现webpack.dev.conf.

在vue项目中的axios使用配置记录

默认vue项目中已经安装axios,基于element-ui开发,主要记录配置的相关. axiosConfig.js import Vue from 'vue' import axios from 'axios' import qs from 'qs' import { Message, Loading } from 'element-ui' // 响应时间 axios.defaults.timeout = 5 * 1000 // 配置cookie // axios.defaults.withC

Vue中封装axios

参考: https://www.jianshu.com/p/7a9fbcbb1114 https://www.cnblogs.com/dreamcc/p/10752604.html 一.安装axios npm i axios -S 二.创建src/utils/axios.js.src/api/api.js axios.js用于封装axios,api.js用于管理接口 三.axios.js // axios.js import axios from "axios"; // 部分数据需要存

vue项目常用方法封装,持续更新中。。。

vue项目中可以直接使用 1.常用工具类untils.js中 /* * 验证手机号是否合格 * true--说明合格 */ export function isPhone(phoneStr){ let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/; if (!myreg.test(phoneStr)) { return false; } else { return true; } } /* * 验证身份证号是否合格 * true--说明合格 */ export fun