解决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 兼容firefox的一些问题
May 21 Javascript
javascript 从if else 到 switch case 再到抽象
Jul 17 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
jquery.qrcode在线生成二维码使用示例
Aug 21 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
获取当前按钮或者html的ID名称实例(推荐)
Jun 23 Javascript
Vue中正确使用jQuery的方法
Oct 30 jQuery
浅谈react-router@4.0 使用方法和源码分析
Jun 04 Javascript
微信小程序 可搜索的地址选择实现详解
Aug 28 Javascript
移动端手指操控左右滑动的菜单
Sep 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中函数的形参与实参的问题说明
2010/09/01 PHP
深入php多态的实现详解
2013/06/09 PHP
PHP设置一边执行一边输出结果的代码
2013/09/30 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
PHP简单创建压缩图的方法
2016/08/24 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
为指定的元素添加遮罩层的示例代码
2014/01/15 Javascript
jquery动态改变div宽度和高度
2015/02/09 Javascript
JavaScript中对DOM节点的访问、创建、修改、删除
2015/11/16 Javascript
JavaScript实现复制或剪切内容到剪贴板功能的方法
2016/05/23 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
nodejs入门教程一:概念与用法简介
2017/04/24 NodeJs
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
python 字典(dict)按键和值排序
2016/06/28 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
对numpy中shape的深入理解
2018/06/15 Python
python numpy元素的区间查找方法
2018/11/14 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
详解python中index()、find()方法
2019/08/29 Python
python 实现生成均匀分布的点
2019/12/05 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
2020/09/29 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
高二生物教学反思
2014/01/27 职场文书
暑假学习心得体会
2014/09/02 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
PHP命令行与定时任务
2021/04/01 PHP
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android