2016-02-06 13 views
9

Jestem nowy w Obietnicy w javascript, więc mam nadzieję, że niektóre mogą mi pomóc z tym problemem.Obietnice nie działa na IE11

Problem: Obietnica nie będąc wykonać na IE11, działa dobrze w Chrome i FireFox

Ramki używane: Próbowałem za pomocą ES6-promise.d.ts i bluebird.d.ts sam rezultat.

Kod:

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

Wyniki: Chrome i Firefox widzę wszystkie dzienniki, ale na IE11 widzę tylko "wewnątrz executeSomething", co oznacza problem jest podczas tworzenia obietnicy.

Pomyślałem, że to dlatego, że IE11 nie obsługuje es6, ale otrzymuję ten sam wynik za pomocą bluebird, mam nadzieję, że niektóre mogą przynieść trochę światła do mojego problemu.

+1

IE11 nie obsługuje obietnic es6. https://kangax.github.io/compat-table/es6/#ie11 – jib

Odpowiedz

6

Aby strona IE11 działała, musisz umieścić na swojej stronie poliwęce z obietnicą.

Twój instynkt używać ES-obietnicy jest poprawna, ale trzeba również dołączyć plik .js w html

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

Plik .d.ts dadzą kompilator maszynopis To definicji, ale nie wpływa na czas pracy. Nadal musisz umieścić folię w swoim html, aby rzeczywiście działała w przeglądarce.

Największą rzeczą do zapamiętania podczas korzystania maszynopis lub dowolny język kompilowany jest różnica między skompilować czas i bieg czasu.

.d.ts, .ts, .tsx, itd. Czy wszystkie skompilować plików czasowych. Co oznacza, że ​​nie są to faktycznie wykonywane pliki, ale pliki generujące kod środowiska wykonawczego. Pliki

.js są plikami runtime. Są to pliki uruchamiane przez przeglądarkę.

.d.ts plików zrobić nie zawierać kod, ale zamiast definicji podpisu kodu i dlatego powinny zawsze towarzyszyć odpowiedni .js pliku, który zostanie uruchomiony w przeglądarce.

+0

es6-obietnica to straszna obietnica polyfill za to, co jest warte. –

+0

Dzięki! dzieje się tak tylko na IE nie wiem dlaczego, ale dodanie odniesienia rozwiązało mój problem. – Moy

+0

@BenjaminGruenbaum, czy masz sugestię, czy polyfill jest lepszy? – bnieland