解决vue跨域axios异步通信问题


Posted in Javascript onApril 17, 2019

在项目中,常常需要从后端获取数据内容。特别是在前后端分离的时候,前端进行了工程化部署,跨域请求成了一个前端必备的技能点。好在解决方案很多。

 在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跨域axios异步通信问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
IE7提供XMLHttpRequest对象为兼容
Mar 08 Javascript
jquery插件珍藏(图片局部放大/信息提示框)
Jan 08 Javascript
jQuery实现类似淘宝购物车全选状态示例
Jun 26 Javascript
初识SmartJS - AOP三剑客
Jun 08 Javascript
自定义函数实现IE7与IE8不兼容js中trim函数的问题
Feb 03 Javascript
Winform客户端向web地址传参接收参数的方法
May 17 Javascript
Bootstrap基本样式学习笔记之按钮(4)
Dec 07 Javascript
canvas实现钟表效果
Feb 13 Javascript
JS实现隔行换色的表格排序
Mar 27 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
Oct 19 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 #Javascript
微信公众平台 发送模板消息(Java接口开发)
Apr 17 #Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
Apr 17 #Javascript
vue获取时间戳转换为日期格式代码实例
Apr 17 #Javascript
微信小程序bindinput与bindsubmit的区别实例分析
Apr 17 #Javascript
vue 项目 iOS WKWebView 加载
Apr 17 #Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
Apr 17 #Javascript
You might like
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
js验证是否为数字的总结
2013/04/14 Javascript
javascript 实现子父窗体互相传值的简单实例
2014/02/17 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
首页图片漂浮效果示例代码
2014/06/05 Javascript
JS根据年月获得当月天数的实现代码
2014/07/03 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
Python 检查数组元素是否存在类似PHP isset()方法
2014/10/14 Python
Python的Django框架使用入门指引
2015/04/15 Python
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
html5实现完美兼容各大浏览器的播放器
2014/12/26 HTML / CSS
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
简短的公司员工自我评价分享
2013/11/13 职场文书
毕业生党员个人总结
2015/02/14 职场文书
写给同学的新学期寄语
2015/02/27 职场文书
联村联户简报
2015/07/21 职场文书
高三数学教学反思
2016/02/18 职场文书
争做文明公民倡议书
2019/06/24 职场文书
创业计划书之酒厂
2019/10/14 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript