2016-07-17 15 views
5

Chcę wiedzieć, czy obietnice JS były częścią es5? Jeśli tak, dlaczego nie działa czasami w starszych przeglądarkach i musimy dodać polyfill dla tego samego. Ponadto, który polyfill należy dodać w tym przypadku, es5 lub es6? Mam małe zamieszanie dotyczące tego samego.ES5 vs ES6 Obietnica

+0

ES5 nie otrzymał obietnic. Biblioteki, takie jak jQuery lub Angular, mają własne zastrzeżone obietnice. – jfriend00

+0

ES5 nie ma obietnic jako części języka. W przypadku ES5 obietnice to tylko wzór. W ES5 jest rzeczywiście wiele bibliotek, które wdrażają wiele różnych rodzajów obietnic. Możesz nawet zaimplementować je samodzielnie, ponieważ jest to tylko wzór. – slebetman

+0

@slebetman Czy możesz podać mi jakiś łatwy przykład realizacji obietnicy? –

Odpowiedz

19

ES5 nie otrzymał obietnic. Biblioteki takie jak jQuery lub Angular miały własne niestandardowe i niestandardowe implementacje obietnic.

Popularnymi implementacjami obietnic do użytku z ES5 są Bluebird (zgodny ze standardem ES6) i Q (który pierwotnie nie był zgodny ze standardem ES6 - choć wydaje się poruszać w tym kierunku) i RSVP.

Nie są to również rzeczywiste polyfills, ponieważ nie zejdą z drogi, jeśli obecne są obietnice, ponieważ dodają dodatkowe funkcje.

Istnieje kilka czystych polyfills dla obietnic ES6. Oto jeden, który jest podzbiorem RSVP: https://github.com/stefanpenner/es6-promise.

Istnieją powody do korzystania z więcej niż PolyFill jak można przeczytać tutaj: Are there still reasons to use promise libraries like Q or BlueBird now that we have ES6 promises?

wyjściowa zalecenia konkretnej biblioteki polyfill jest uważana za off-topic tutaj na przepełnienie stosu, więc nie będę tego komentować .

+0

@ jfriend00 Znalazłem na googling ten codepen http://codepen.io/tijmenbruggeman/pen/LVOqBq Czy to wprowadzające w błąd? –

+1

@ParamSingh - Co ten codepen ma wspólnego z czymkolwiek tutaj? – jfriend00

+0

@KirillSlatin - już zmieniłem na "niestandardowy i niestandardowy", ale wolałbym wydawać energię na treści merytoryczne, a nie wyrabianie czegoś nie będzie nikomu mylić. – jfriend00