javascript-如何使承诺在IE11中工作

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

码笔

提前致谢。

'use strict';

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

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

promise
  .then(
    result => {
      alert("Fulfilled: " + result);
    },
    error => {
      alert("Rejected: " + error);
    }
  );
Billy Logan asked 2020-01-14T09:57:35Z
2个解决方案
81 votes

如果您希望这种类型的代码在IE11中运行(根本不支持ES6的很多功能),那么您需要获得一个第三方承诺库(例如Bluebird),包括该库并更改您的编码以使用ES5编码结构 (没有箭头功能,没有let等),因此您可以在较旧的浏览器支持的范围内生存。

或者,您可以使用编译器(如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>
jfriend00 answered 2020-01-14T09:58:05Z
-9 votes

这对我来说即11

(function (undefined) { }).call('object' === typeof window && window || 'object' === typeof self && self || 'object' === typeof global && global || {});

polyfill.sj:[https://codepureandsimple.com/polyfilling-internet-explorer-11-a715c5b3c72]

Milton Alvarado answered 2020-01-14T09:58:29Z
translate from https://stackoverflow.com:/questions/36016327/how-to-make-promises-work-in-ie11