2016-07-17 6 views
5

Ich möchte wissen, ob JS Versprechungen ein Teil von es5 waren? Wenn ja, warum funktioniert es manchmal in älteren Browsern nicht und wir müssen ein Polyfill für dasselbe hinzufügen. Auch welches Polyfill sollte in diesem Fall hinzugefügt werden, es5 oder es6? Ich habe ein wenig Verwirrung in Bezug auf das Gleiche.ES5 vs ES6 Versprechen

+0

ES5 hatte keine Versprechungen. Bibliotheken wie jQuery oder Angular hatten ihre eigenen proprietären Versprechen Implementierungen. – jfriend00

+0

ES5 hat keine Versprechen als Teil der Sprache. Für ES5 sind Versprechen nur ein Entwurfsmuster. Es gibt tatsächlich viele Bibliotheken in ES5, die viele verschiedene Arten von Versprechen umsetzen. Sie können sie sogar selbst implementieren, da es nur ein Designmuster ist. – slebetman

+0

@slebetman Können Sie mir ein einfaches Beispiel für die Umsetzung des Versprechens geben? –

Antwort

19

ES5 hatte keine Versprechungen. Bibliotheken wie jQuery oder Angular hatten ihre eigenen benutzerdefinierten und nicht standardmäßigen Versprechungen.

Beliebte Promise-Implementierungen für die Verwendung mit ES5 sind Bluebird (das mit dem ES6-Standard kompatibel ist) und Q (das ursprünglich nicht mit dem ES6-Standard kompatibel war), und RSVP.

Weder sind tatsächliche Polyfills, in denen sie nicht aus dem Weg kommen, wenn native Versprechen vorhanden sind, weil sie zusätzliche Funktionen hinzufügen.

Es gibt einige reine Polyfills für ES6 verspricht. Hier ist eine, die eine Teilmenge von RSVP ist: https://github.com/stefanpenner/es6-promise.

Es gibt Gründe, um mehr als ein polyfill zu verwenden, wie Sie hier lesen: Are there still reasons to use promise libraries like Q or BlueBird now that we have ES6 promises?

Vorstellung für eine Empfehlung eines bestimmten polyfill Bibliothek wird als Off-Topic hier auf Stack-Überlauf, damit ich nicht dazu äußern wird .

+0

@ jfriend00 Ich fand auf Googeln dieses Codepen http://codepen.io/tijmenbruggeman/pen/LVOqBq Ist es irreführend? –

+1

@ParamSingh - Was hat dieser Codepen hier mit irgendetwas zu tun? – jfriend00

+0

@KirillSlatin - Ich habe mich bereits auf "benutzerdefiniert und nicht standardisiert" geändert, obwohl ich lieber Energie für sinnvolle Inhalte ausgeben würde, als Wörter zu schreiben, die für niemanden verwirrend sein werden. – jfriend00

Verwandte Themen