2017-06-26 5 views
-1

Ab 2017 haben alle aktuellen Versionen von Webbrowsern Unterstützung für ES6-Versprechen.Rückrufe oder Versprechen für neue clientseitige JavaScript-Bibliothek?

Wenn ich jetzt eine browserseitige Javascript-Bibliothek erstellen sollte, was sind die Vor- und Nachteile (oder verwandte Überlegungen) bei der Verwendung von Callback-Style-Funktionen im Vergleich zu Versprechen? Ist es noch eine Option, Callbacks zu verwenden?

Hinweis: Die Operationen der Bibliothek sind E/A-bezogen, daher passen asynchrone Operationen gut, daher halte ich synchrone Operationen nicht für eine Option.

+0

Hauptüberlegung für die Verwendung von Versprechen ist, dass Fehler eingefangen werden. Verringert auch die Code-Komplexität Wenn Sie eine Web-App entwickeln, sind Sie jedoch nicht sicher, dass alle Browser Versprechungen nativ unterstützen. Viele Legacy-Browser sind noch in Verwendung, besonders in mobilen – charlietfl

Antwort

2

Nun, natürlich sollten Sie Versprechungen verwenden. Es ist nur ein viel besseres konzeptionelles Framework für die Handhabung asynchroner Dinge. Wenn Sie das nicht tun, werden die ersten 90% Ihrer Benutzer sowieso Ihre APIs in Versprechen einbinden, und Sie möchten sie nicht dazu bringen, das zu tun, oder?

In der Theorie könnten Sie den Dual-Mode-Ansatz der Anwesenheit oder Abwesenheit eines Parameters callback steuern, ob eine bestimmte API Callback oder Versprechen ähnlich verhält. Viele Bibliotheken mit Wurzeln in vorversprechenden Tagen nehmen diesen Weg. Es ist zweifelhaft, ob Sie diesen Ansatz für eine neue Bibliothek verwenden möchten.

Sie können Ihre Bibliothek mit der Fähigkeit zur Integration in eine Versprechens-Bibliothek der Wahl des Benutzers versenden, falls er keine nativen Versprechungen hat oder nicht verwenden kann. Der Benutzer würde Ihre Bibliothek mit etwas wie initNcasasLibrary(Promise) initialisieren. Alternativ können Sie sicherstellen, dass Promise verfügbar ist, indem Sie sicherstellen, dass ein Polyfill enthalten ist, wenn er auf Browser ausgerichtet ist, die möglicherweise nicht darauf zugreifen.

+0

. Erwähnenswert ist, dass es mit "erwarten/async" out of the box arbeiten wird. –

Verwandte Themen