解决vue跨域axios异步通信
程序员文章站
2022-11-27 13:38:05
在项目中,常常需要从后端获取数据内容。特别是在前后端分离的时候,前端进行了工程化部署,跨域请求成了一个前端必备的技能点。好在解决方案很多。 在vue中,在开发中,当前使用较多的是axios进行跨域请求数据,但不少人遇到如下问题: 异步通信,无法同步执行 无法集中管理 不便阅读 还未请求成功就调转了 ......
在项目中,常常需要从后端获取数据内容。特别是在前后端分离的时候,前端进行了工程化部署,跨域请求成了一个前端必备的技能点。好在解决方案很多。
在vue中,在开发中,当前使用较多的是axios进行跨域请求数据,但不少人遇到如下问题:
- 异步通信,无法同步执行
- 无法集中管理
- 不便阅读
- 还未请求成功就调转了
- then里面的逻辑越来越繁杂
以往的网络请求的写法如下:
// main.js // 引入axios import axios from 'axios' vue.prototype.$axios = axios;
// vue页面中的使用 // get let url = '地址' this.$axios.get(url,{ params:{} // 参数信息 }) .then((res) => { // 成功后执行语句 }) .catch((err) =>{ // 网络中断或失败执行语句 }) // post let url = '地址' this.$axios.post(url,{ // 参数信息 }) .then((res) => { // 成功后执行语句 }) .catch((err) =>{ // 网络中断或失败执行语句 })
或许在目前的过程中异步能够更好的解决用户体验感,先加载后弹出。但总有那么一个场景我们需要大量的内容进行处理,而且前后有明显的顺序执行
的关系,那么异步通信可能会对你造成不必要的问题。所以,解决运用async/await
解决异步通信问题
在main.js
旁边新建http.js
文件
// http.js 引入axios import axios from 'axios' var http = { // get 请求 get: function(url,params){ return new promise((resolve,reject) => { axios.get(url,{ params:params }) .then((response) =>{ resolve(response.data) }) .catch((error) => { reject( error ) }) }) } // post 请求 post: function(url,params){ return new promise((resolve,reject) => { axios.post(url,params) .then((response) => { resolve( response.data ) }) .catch((error) => { reject( error ) }) }) } } export default http
并在main.js入口引入
// 引入http请求 import http from './http.js' vue.prototype.$http = http
现在就可以在页面中使用了
// 在vue中使用 // get async login () { let url = '地址' let params = {} // 参数 let res = await this.$http.get(url,params) } // post async login () { let url = '地址' let params = {} // 参数 let res = await this.$http.post(url,params) }
async
放在方法前面await
放在$http
前面就ok了
单词示意:async
:异步。await
:等待。
推荐阅读
-
解决Vue调用springboot接口403跨域问题
-
vue打包使用Nginx代理解决跨域问题
-
Spring boot 和Vue开发中CORS跨域问题解决
-
基于axios 解决跨域cookie丢失的问题
-
在vue项目中,使用axios跨域处理
-
使用proxytable 配置解决 vue-cli 的跨域请求问题【推荐】
-
Vue 项目中遇到的跨域问题及解决方法(后台php)
-
vue-cli axios请求方式及跨域处理问题
-
解决vue+springboot前后端分离项目,前端跨域访问sessionID不一致导致的session为null问题
-
详解html5 postMessage解决跨域通信的问题