解决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常见注意事项
Jan 01 Javascript
让FireFox支持innerText的实现代码
Dec 01 Javascript
一段实现页面上的图片延时加载的js代码
Feb 11 Javascript
Javascript Throttle & Debounce应用介绍
Mar 19 Javascript
详解JavaScript正则表达式中的global属性的使用
Jun 16 Javascript
Express框架之connect-flash详解
May 31 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
学习jQuery中的noConflict()用法
Sep 28 jQuery
Vue动态面包屑功能的实现方法
Jul 01 Javascript
解决在Vue中使用axios用form表单出现的问题
Oct 30 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
Feb 05 Javascript
VUE使用axios调用后台API接口的方法
Aug 03 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 expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
解析左右值无限分类的实现算法
2013/06/20 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
浅谈php函数serialize()与unserialize()的使用方法
2014/08/19 PHP
百度工程师讲PHP函数的实现原理及性能分析(二)
2015/05/13 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
优化 JavaScript 代码的方法小结
2009/07/16 Javascript
JavaScript 加号(+)运算符号
2009/12/06 Javascript
滚动条变色 隐藏滚动条与双击网页自动滚屏显示代码
2009/12/28 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
JS实现的通用表单验证插件完整实例
2015/08/20 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
AngularJS入门教程之模块化操作用法示例
2016/11/02 Javascript
nodejs进阶(6)—连接MySQL数据库示例
2017/01/07 NodeJs
Angular简单验证功能示例
2017/12/22 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
python3实现SMTP发送邮件详细教程
2018/06/19 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
tensorflow ckpt模型和pb模型获取节点名称,及ckpt转pb模型实例
2020/01/21 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
阿迪达斯新加坡官方网站:adidas新加坡
2019/12/06 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
资产经营总监岗位职责范文
2013/12/01 职场文书
网络信息安全承诺书
2014/03/26 职场文书
论文诚信承诺书
2014/05/23 职场文书
医院党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
校本研修个人总结
2015/02/28 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
oracle覆盖导入dmp文件的2种方法
2021/05/21 Oracle
tomcat下部署jenkins的方法
2022/05/06 Servers
python+opencv实现目标跟踪过程
2022/06/21 Python