Javascript 如何使ES6中的承诺在IE10、IE11和Safari中起作用?
我有一个ECMAScript 6代码,可以在除Internet Explorer(包括10和11)和Safari之外的所有浏览器上运行。如何使它在所有浏览器上都工作 我尝试使用以下方法将代码从ES6转换为ES5 但它给了我同样的代码Javascript 如何使ES6中的承诺在IE10、IE11和Safari中起作用?,javascript,ecmascript-6,safari,internet-explorer-11,es6-promise,Javascript,Ecmascript 6,Safari,Internet Explorer 11,Es6 Promise,我有一个ECMAScript 6代码,可以在除Internet Explorer(包括10和11)和Safari之外的所有浏览器上运行。如何使它在所有浏览器上都工作 我尝试使用以下方法将代码从ES6转换为ES5 但它给了我同样的代码 // override show method of Modal.js (function ModalController() { var show = Modal.prototype.show; Modal.prototype.show = func
// override show method of Modal.js
(function ModalController() {
var show = Modal.prototype.show;
Modal.prototype.show = function() {
// translate the settings buttons
var promises = [];
var that = this;
this.settings.buttons.forEach(element => {
var promise = Globalize.translate(element.label);
promises.push(promise);
promise.then(function(data) {
element.label = data;
});
});
// when all components are translated
Promise.all(promises).then(function(values) {
show.apply(that, []);
})
}
})();
如果你试图用babel和“它给我相同的代码”将ES6转换成ES5,简单地说,你做得不对。只要看一下这个代码片段,我就发现IE的主要问题是单箭头函数。@Taplar-Promise对象在IESo中不受支持。有(至少)两件事。我并不是说箭头功能是唯一的问题。解决这个问题的最快方法(如果允许的话,也是最简单的方法)是使用Polyfill来表示承诺,并用传统的函数表达式替换arrow函数。Polyfill可以在这里找到:如果你试图用babel和“它给我相同的代码”将ES6转换为ES5,简单地说,你做错了。只要看一下这个代码片段,我就发现IE的主要问题是单箭头函数。@Taplar-Promise对象在IESo中不受支持,所以(至少)有两件事。我并不是说箭头功能是唯一的问题。解决这个问题的最快方法(如果允许的话,也是最简单的方法)是使用Polyfill来表示承诺,并用传统的函数表达式替换arrow函数。Polyfill可在以下位置找到: