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.datareturn 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.datareturn 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}},}