admin管理员组文章数量:1558087
【背景】测试反馈问题,某h5列表页IOS9中列表不显示,其他机型和环境正常
【问题排查】抓包发现请求没有发出,检查代码发现请求列表之前调用了某个接口使用了promise的finally的语法,处理了请求后统一操作,怀疑是低版本浏览器不兼容此语法,去掉finally之后列表请求可以发出
【问题解决】
考虑系统中很多页面都使用了finally的语法处理,选择全局进行兼容,参考文章浏览器不支持promise的finally - 迷离不迷离 - 博客园引入promise.prototype.finally,
两种写法:
1、require引入垫片执行,可以直接按文章中提到的在项目main.js里面引入require('promise.prototype.finally').shim(),
2、import 引入,去看了看安装的promise.prototype.finally的readme的usage,如下
Most common usage:
```js
var assert = require('assert');
var promiseFinally = require('promise.prototype.finally');
var resolved = Promise.resolve(42);
var rejected = Promise.reject(-1);
promiseFinally(resolved, function () {
assert.equal(arguments.length, 0);
return Promise.resolve(true);
}).then(function (x) {
assert.equal(x, 42);
});
promiseFinally(rejected, function () {
assert.equal(arguments.length, 0);
}).catch(function (e) {
assert.equal(e, -1);
});
promiseFinally(rejected, function () {
assert.equal(arguments.length, 0);
throw false;
}).catch(function (e) {
assert.equal(e, false);
});
promiseFinally.shim(); // will be a no-op if not needed
简单点直接垫片调用
import prototypeFinally from 'promise.prototype.finally';
prototypeFinally.shim();
特此记录~
版权声明:本文标题:学习总结-低版本浏览器(移动端ios9以下或者pc低版本IE)不兼容promise finally的写法全局处理 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1727374018a1111495.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论