2016-03-15 17 views
13

私は、Internet Explorer 11以外のすべてのブラウザで完全に動作する単純なコードを持っています。どのブラウザでも動作させるにはどうすればいいですか?事前にIE11で約束をする方法

Codepen

感謝。

'use strict'; 

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

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

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

IE11はありませんes2015 –

+5

IE11どちらもサポートし、[矢印機能](http://caniuse.com/#feat =矢印機能)、[ネイティブプロミス](http://caniuse.com/#feat=promises)も含まれています。 ([バベル](https://babeljs.io/)のような)JSのtranspilerを使用するか、ES6機能を使用しないでください。 Promiseサポートのためには、[bluebird](http://bluebirdjs.com/)のようなライブラリを使用することができます。 – Tomalak

+2

(BTW、このコードはIE11以外のブラウザでも動作しないことをhttp://caniuse.comで確認してください)使用したいJS、CSS、またはHTML機能がどれだけうまくサポートされているかチェックする習慣をつくる) – Tomalak

答えて

31

あなたはこの種のコードは、(すべてでES6の多くをサポートしていません)IE11で実行したい場合は、あなたがサードパーティの約束ライブラリを取得する必要があります(Bluebirdなど)、そのライブラリや変更が含まれますあなたのコーディングはES5コーディング構造(矢印機能なし、letなど...)を使用しないようにするため、古いブラウザがサポートする範囲内で暮らすことができます。

または、トランスファー(Babelなど)を使用して、ES6コードを古いブラウザで動作するES5コードに変換することができます。ここで

は、ブルーバード約束ライブラリと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> 
関連する問題