Как сделать работу promises в IE11

У меня есть простой код, который отлично работает в каждом браузере, за исключением 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);
    }
  );

Ответ 1

Если вы хотите, чтобы этот тип кода запускался в IE11 (который вообще не поддерживает большую часть ES6), вам нужно получить стороннюю библиотеку обещаний (например Bluebird), включите эту библиотеку и измените свое кодирование, чтобы использовать структуры кодирования ES5 (нет функций стрелок, нет let и т.д.), чтобы вы могли жить в пределах того, что поддерживают старые браузеры.

Или вы можете использовать транспилер (например Babel), чтобы преобразовать ваш код ES6 в код ES5, который будет работать в старых браузерах.

Здесь версия вашего кода, написанная в синтаксисе ES5 с библиотекой обещаний Bluebird:

<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>