如何支持Internet Explorer11中的承诺?

我有一个简单的代码,可以在除Internet Explorer 11以外的所有浏览器上完美运行。如何使其在所有浏览器上都能运行?

Codepen

'use strict';

let promise = new Promise((resolve, reject) => {

  setTimeout(() => {
    resolve("result");
  }, 1000);
});

promise
  .then(
    result => {
      alert("Fulfilled: " + result);
    },
    error => {
      alert("Rejected: " + error);
    }
  );
如果您希望这种类型的代码在IE11中运行(它根本不支持推荐答案的大部分内容),那么您需要获得一个第三方Promise库(如),包括该库,并将您的代码更改为使用ES5编码结构(无箭头函数,无[2-0]等.)因此,您可以在旧浏览器支持的范围内生活。

或者,您可以使用转换程序(如Babel)将ES6代码转换为可以在旧浏览器中运行的ES5代码。

以下是使用Bluebird Promise库使用ES5语法编写的代码版本:

<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>

<script>

'use strict';

var promise = new Promise(function(resolve) {
    setTimeout(function() {
        resolve("result");
    }, 1000);
});

promise.then(function(result) {
    alert("Fulfilled: " + result);
}, function(error) {
    alert("Rejected: " + error);
});

</script>

相关文章