2016-02-06 25 views
9

私は約束していますので、この問題で私が助けてくれることを願っています。IE11で動作しない約束

問題:私はES6-promise.d.tsとbluebird.d.ts同じ結果を使用してみました:約束はIE11上で実行されていない、使用ChromeとFirefoxの

フレームワーク上で正常に動作します。

コード:

static executeSomething(): Promise<any> 
{ 
    console.log("inside executeSomething"); 
    var test= new Promise((resolve, reject)=> 
    { 
    console.log("inside Promise"); 

    }).catch(function(error){console.log("error")}); 
console.log("after promise"); 
return test;  
} 

結果:クロームとFirefoxの私は、すべてのログを見ることができますが、IE11に私は約束を作成中に問題があることを意味し、「インサイドexecuteSomething」を参照してください。

IE11はes6をサポートしていなかったと思っていましたが、ブルーバードを使用して同じ結果が得られました。

+1

IE11はes6約束をサポートしていません。 https://kangax.github.io/compat-table/es6/#ie11 – jib

答えて

6

IE11を使用するには、ページにpromif polyfillを含める必要があります。 ES-約束を使用する

あなたの本能は正しいですが、あなたはまた、定義をだ活字体のコンパイラを与えるあなたのhtml

<script src="path/to/es6-promise.js"></script> 

.d.tsファイルに.jsファイルをインクルードする必要がありますが、実行時には影響しません。実際にブラウザで実行するには、polyfillをhtmlに含める必要があります。活字体または任意のコンパイル言語を使用する際に覚えておく

最大のものは時間と実行時間をコンパイルとの間の差です。など

.d.ts.ts.tsx、すべてコンパイル時ファイルです。つまり、これらは実際に実行されるファイルではなく、ランタイムコードを生成するファイルです。

.jsファイルは、ランタイムファイルです。これらは、ブラウザによって実行されるファイルです。

.d.tsファイルがないはコードが含まれませんが、その代わりに、コードの署名の定義、したがって、常には、ブラウザで実行されます、対応する.jsファイルを伴うべきです。

+0

es6-約束は、それが価値あるものであることの恐ろしい約束です。 –

+0

ありがとう!これはIEでのみ起こりますが、理由はわかりませんが、参照を追加すると問題が解決しました。 – Moy

+0

@BenjaminGruenbaum、より良いpolyfillの提案はありますか? – bnieland