Comment faire des promesses de travail dans IE11
J'ai un code simple qui fonctionne parfaitement sur tous les navigateurs sauf Internet Explorer 11. Comment puis-je le faire fonctionner sur tous les navigateurs?
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);
}
);
- ie11 n'a pas es2015
- IE11 ne soutient fonctions, ni native Promesses. Utiliser un JS transpiler (comme babel) ou n'utilisez pas ES6 fonctionnalités. Pour la Promesse du soutien, vous pouvez utiliser une bibliothèque comme bluebird.
- (BTW, remarque comment caniuse.com, montre que ce code serait également ne pas fonctionner dans certains autres navigateurs que IE11. Prenez l'habitude de vérifier comment bien pris en charge un JS, CSS ou HTML fonctionnalité que vous souhaitez utiliser est.)
- Connexes stackoverflow.com/questions/27835687/...
- Si vous utilisez Babeljs à transpile votre code, vous pouvez installer le "es2015-ie" preset avec le "babel-polyfill" npm module pour résoudre ce problème de compatibilité avec IE ainsi que d'éviter une flopée d'autres IE questions liées à la
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez ce type de code à exécuter dans IE11 (qui ne supporte pas beaucoup de ES6 à tous), alors vous avez besoin pour obtenir un 3ème partie de la promesse de la bibliothèque (comme Bluebird), comprennent que la bibliothèque et de modifier votre code pour utiliser ES5 structures de codage (pas de flèche, des fonctions, pas de
let
, etc...) de sorte que vous pouvez vivre dans les limites de ce que les anciens navigateurs soutien.Ou, vous pouvez utiliser un transpiler (comme Babel) pour convertir votre ES6 code de ES5 code qui fonctionne dans les navigateurs plus anciens.
Voici une version de votre code écrit dans l'ES5 syntaxe avec le Bluebird promesse de la bibliothèque:
new Promise()
qui n'est pas une syntaxe jQuery prend en charge. La même chose pourrait être dit à propos d'une autre promesse bibliothèques tel que Q qui sont compatibles avec les navigateurs plus anciens, mais qui ont leur propre non-standard de la syntaxe.let
etconst
sont disponibles avec ie11, lorsqu'il n'est pas utilisé dans une boucle for. il est l'un des seuls es6 fonction ei11 en fait de soutien. (avec peu deMap
etSet
et certains autres frais divers de fonction)cela fonctionne pour moi sous ie 11
polyfill.sj: https://codepureandsimple.com/polyfilling-internet-explorer-11-a715c5b3c72