解决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 相关文章推荐
javascript基本语法分析说明
Jun 15 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
JS+CSS实现的竖向简洁折叠菜单效果代码
Oct 22 Javascript
AngularJS  $modal弹出框实例代码
Aug 24 Javascript
如何使用Vuex+Vue.js构建单页应用
Oct 27 Javascript
jQuery EasyUI中的日期控件DateBox修改方法
Nov 09 Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 Javascript
微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】
Dec 05 Javascript
使用validate.js实现表单数据提交前的验证方法
Sep 04 Javascript
微信小程序实现原生步骤条
Jul 25 Javascript
超简单的微信小程序轮播图
Nov 22 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
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
谷歌浏览器 insertCell与appendChild的区别
2009/02/12 Javascript
jquery 将disabled的元素置为enabled的三种方法
2009/07/25 Javascript
jQuery打印指定区域Html页面并自动分页
2014/07/04 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
Vue实现双向绑定的方法
2016/12/22 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
详解Vue iview IE浏览器不兼容报错(Iview Bable polyfill)
2019/01/07 Javascript
JS使用Dijkstra算法求解最短路径
2019/01/17 Javascript
vue-router 2.0 跳转之router.push()用法说明
2020/08/12 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
详解Python的单元测试
2015/04/28 Python
python实现支持目录FTP上传下载文件的方法
2015/06/03 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python 美化输出信息的实例
2018/10/15 Python
python requests post多层字典的方法
2018/12/27 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
Python实现AI换脸功能
2020/04/10 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
幼儿运动会邀请函
2014/01/17 职场文书
回门宴父母答谢词
2014/01/26 职场文书
文明演讲稿范文
2014/05/12 职场文书
2014县委书记党的群众路线教育实践活动对照检查材料思想汇报
2014/09/22 职场文书
客户付款通知书
2015/04/23 职场文书
暂停营业通知
2015/04/25 职场文书
书法社团活动总结
2015/05/07 职场文书
入党介绍人意见范文
2015/06/01 职场文书
JS实现扫雷项目总结
2021/05/19 Javascript
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL
MySQL约束(创建表时的各种条件说明)
2022/06/21 MySQL