web-dev-qa-db-fra.com

Comment faire pour que les promesses fonctionnent dans IE11

J'ai un code simple qui fonctionne parfaitement sur tous les navigateurs, à l'exception d'Internet Explorer 11. Comment puis-je le faire fonctionner sur tous les navigateurs?

Codepen

Merci d'avance.

'use strict';

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

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

promise
  .then(
    result => {
      alert("Fulfilled: " + result);
    },
    error => {
      alert("Rejected: " + error);
    }
  );
51
Billy Logan

Si vous voulez que ce type de code soit exécuté dans IE11 (qui ne prend pas du tout en charge beaucoup d'ES6), vous devez vous procurer une bibliothèque de promesse tierce (telle que Bluebird ), inclure cette bibliothèque et la modifier. votre codage pour utiliser les structures de codage ES5 (pas de fonction de flèche, pas de let, etc ...) afin de pouvoir vivre dans les limites de ce que les navigateurs plus anciens supportent.

Ou, vous pouvez utiliser un transpiler (comme Babel ) pour convertir votre code ES6 en code ES5 qui fonctionnera dans les navigateurs plus anciens.

Voici une version de votre code écrite avec la syntaxe ES5 avec la bibliothèque de promesses 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>
77
jfriend00