解决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 相关文章推荐
使用js获取QueryString的方法小结
Feb 28 Javascript
JavaScript几种形式的树结构菜单
May 10 Javascript
Checbox的操作含已选、未选及判断代码
Nov 07 Javascript
jQuery避免$符和其他JS库冲突的方法对比
Feb 20 Javascript
js单独获取一个checkbox看其是否被选中
Sep 22 Javascript
JavaScript黑洞数字之运算路线查找算法(递归算法)实例
Jan 28 Javascript
浅谈js中的延迟执行和定时执行
May 31 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
Jun 12 Javascript
jQuery的$.extend 浅拷贝与深拷贝
Mar 08 Javascript
Vue.js的复用组件开发流程完整记录
Nov 29 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
Jan 26 Javascript
vue-router中hash模式与history模式的区别
Jun 23 Vue.js
自定义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使用者状态管理功能的应用
2006/10/09 PHP
php二分法在IP地址查询中的应用
2008/08/12 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
php中注册器模式类用法实例分析
2015/11/03 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
使用YII2框架实现微信公众号中表单提交功能
2017/09/04 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
Array的push与unshift方法性能比较分析
2011/03/05 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
php结合imgareaselect实现图片裁剪
2015/07/05 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
浅析$.getJSON异步请求和同步请求
2016/06/06 Javascript
leaflet的开发入门教程
2016/11/17 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
JavaScript实现类似淘宝的购物车效果
2017/03/16 Javascript
vue.js中created方法作用
2018/03/30 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
postman模拟访问具有Session的post请求方法
2019/07/15 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
用CSS3实现无限循环的无缝滚动的示例代码
2017/11/01 HTML / CSS
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
StudentUniverse英国:学生航班、酒店和旅游
2019/08/25 全球购物
类的核心特性有哪些
2014/01/01 面试题
电脑教师的教学自我评价
2013/11/26 职场文书
项目施工员岗位职责
2014/03/09 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
北京故宫的导游词
2015/01/31 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
MySQL分库分表详情
2021/09/25 MySQL
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技