Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使ES6中的承诺在IE10、IE11和Safari中起作用?_Javascript_Ecmascript 6_Safari_Internet Explorer 11_Es6 Promise - Fatal编程技术网

Javascript 如何使ES6中的承诺在IE10、IE11和Safari中起作用?

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

我有一个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 = 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可在以下位置找到: