详解vue-resource promise兼容性问题
发布时间 - 2026-01-11 01:57:33 点击率:次背景

其实这个问题在之前的项目开发中就出现过,但是当初只解决问题了,并没有针对问题作总结;于是乎今天踩到了自己埋的坑,所以决定记录一下。那么到底是什么问题呢?就是“在安卓低版本,如果你在vue项目中使用了vue-resource(vue-resource是什么?它是一个具有ajax功能的第三方npm包),那么http请求和响应都是正常的,但是,注意,但是来了啊!!但是响应进不去promise回调”,下面我们来具体看一下
正题
一、Vue Resource如何使用?
大家都知道,我们在vue项目经常这样使用vue-resource
1.安装
npm install vue-resource --save
注:--save和--save-dev的区别就是,如果该npm包的代码需要被打包到上线文件,那就--save安装;否则就以--save-dev安装
2.初始化(在入口文件main.js文件中)
import Vue from 'vue' import VueResource from 'vue-resource' // 通过Vue.use使用vue-resource,然后$http对象就被添加到每个组件实例上了 Vue.use(VueResource)
3.使用(在组件内)
this.$http.get(url, {}).then(function (response) {
response.json().then(function(res) {
// 这里是请求成功后的代码逻辑
})
}, function (error) {
// 这里是请求失败后的代码逻辑
console.log(error)
})
二、问题
但实际在安卓低版本中会出现这个问题
this.$http.get(url, {}).then(function (response) {
// 无论是成功还是失败,then中的代码是不会被执行的
response.json().then(function(res) {
// 不执行
})
}, function (error) {
// 也不执行
console.log(error)
})
为何?其实vue-resource采用了ES6 Promise新特性(如何知道的?即使没看过vue-resource的官方文档,我们也可以知道,因为this.$http.get后面直接链式调用了then,then是Promise对象实例的方法,还记得不?),然后Promise本来就是有兼容性问题的,这就是问题的根本原因,那如何解决呢
三、解决方案
es6-promise可以解决这个问题,如何使用?很简单,看下面的代码
1.安装(安装到dependencies中)
npm install es6-promise --save
2.在入口文件main.js中引入使用
import Vue from 'vue'
import VueResource from 'vue-resource'
// cmd方式
require('es6-promise').polyfill()
// ES6模块方式
import Es6Promise from 'es6-promise'
Es6Promise.polyfill()
大功告成,是不是很简单,只需新增而无需删除现有代码,这样对于已经上线的项目是比较安全的
结语
Vue官方现已不推荐使用Vue Resource了,我们可以尝试一下axios,听说也很好用,我就打算在next project中尝个鲜
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# resource兼容性
# vue.js
# 兼容性问题
# vue兼容性问题
# Vue2.0在IE11版本浏览器中的兼容性问题
# vue中引入mousewheel事件及兼容性处理方式
# 详解Vue Cli浏览器兼容性实践
# vue脚手架搭建项目的兼容性配置详解
# 如何去除vue项目中的#及其ie9兼容性
# Vue中 引入使用 babel-polyfill 兼容低版本浏览器的方法
# Vue的兼容性解决方案Babel-polyfill案例解析
# 这个问题
# 很简单
# 链式
# 如何使用
# 都是
# 我就
# 也不
# 来了
# 是有
# 大家都
# 那就
# 上了
# 这就是
# 你在
# 只需
# 推荐使用
# 它是
# 我们可以
# 采用了
# 大功告成
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
如何用虚拟主机快速搭建网站?详细步骤解析
中山网站推广排名,中山信息港登录入口?
个人网站制作流程图片大全,个人网站如何注销?
Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】
如何在服务器上配置二级域名建站?
教你用AI润色文章,让你的文字表达更专业
如何在七牛云存储上搭建网站并设置自定义域名?
北京网站制作公司哪家好一点,北京租房网站有哪些?
Android Socket接口实现即时通讯实例代码
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
北京专业网站制作设计师招聘,北京白云观官方网站?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
微信小程序 五星评分(包括半颗星评分)实例代码
怎样使用JSON进行数据交换_它有什么限制
如何快速上传建站程序避免常见错误?
Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能
Linux系统运维自动化项目教程_Ansible批量管理实战
浅谈Javascript中的Label语句
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程
浏览器如何快速切换搜索引擎_在地址栏使用不同搜索引擎【搜索】
Laravel如何与Docker(Sail)协同开发?(环境搭建教程)
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何用景安虚拟主机手机版绑定域名建站?
网易LOFTER官网链接 老福特网页版登录地址
浅谈redis在项目中的应用
PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】
原生JS获取元素集合的子元素宽度实例
开心动漫网站制作软件下载,十分开心动画为何停播?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】
Laravel storage目录权限问题_Laravel文件写入权限设置
Laravel如何处理和验证JSON类型的数据库字段
Laravel的.env文件有什么用_Laravel环境变量配置与管理详解
javascript读取文本节点方法小结
Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】
google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤
Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】
JavaScript如何实现倒计时_时间函数如何精确控制
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
公司门户网站制作流程,华为官网怎么做?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何挑选优质建站一级代理提升网站排名?
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】
Android使用GridView实现日历的简单功能
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?

