Am 14. September 2017 haben wir eine überarbeitete Fassung unserer Datenschutzrichtlinie veröffentlicht. Wenn Sie video2brain.com weiterhin nutzen, erklären Sie sich mit diesem überarbeiteten Dokument einverstanden. Bitte lesen Sie es deshalb sorgfältig durch.

JavaScript: Asynchrone Programmierung

Erweitertes Beispiel

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Besonders bei größeren und kontinuierlichen Datenmengen kommen die Möglichkeiten von Reactive Extensions zum Tragen.

Transkript

Für dieses Beispiel, beginne ich nun zunächst damit mit dem Befehl npm, install, minus, minus, save, yahoo-finance. Außerdem erstelle ich die Datei 02_rxjs, finance.ts. Mit Hilfe der Bibliothek Yahoo Finance, kann ich also nun historische Kursdaten, beispielsweise, für die Aktien von Apple, relativ einfach herunterladen. Dafür lade ich zunächst einmal die Bibliothek, yahoo-finance. Außerdem möchte ich das Ganze mit rxjs lösen, also lade ich auch diese Bibliothek, mit Hilfe der require Funktion. Diese Art von API erzeugt mir ein Promise. Ich verwende also den Aufruf auf die Funktion yahoo-finance.historical. Im Argument übergebe ich ein Objekt, indem ich das symbol Apple, oder auch kurz: AAPL, und ein Start- und Enddatum angebe. Beispielsweise 2012, den 1.1. Bis zum 31.12.2012. Da es sich hier um ein Promise handelt, kann ich mit Hilfe von rx.Observable.fromPromise das Ganze nun relativ einfach in ein Observable umwandeln. Das Resultat dieses Promise, lasse ich mir zunächst einmal auf die Konsole ausgeben. Hierbei erhalte ich nun ein array, mit mehr als zusätzlich 150 Items, insgesamt 250. Da ich aber den Kurs als einzelne Werte verarbeiten möchte, kann ich mit Hilfe der Funktion flat.Map, und einer sogenannten Identitätsfunktion, die letztendlich jeden einzelnen Wert wieder zurückgibt. das Ganze in einzelnen Einträgen ausgeben. Beispielsweise könnte ich nun auf dieser Basis simulieren, dass diese Kursdaten kontinuierlich in meinen Datenstream gesendet werden. Dafür verwende ich die Funktion zip, und eine zusätzliche Observable, die innerhalb von Intervalzyklen Werte erzeugt. In dem Fall also rx.Observable.interval 1000 Millisekunden. Und immer dann, wenn also nun zwei Werte vorliegen, also ein Wert, der jede Sekunde aus dem Interval stammt, als auch jeweils ein Wert aus dem Promise Observable, immer dann möchte ich nur den ersten Wert. Also den Wert aus dem Promise und damit dann Kursdaten weitergeben. Mit einem subscribe, auf console.log, sehe ich nun, dass die Kursdaten, jede Sekunde, Schritt für Schritt, durch mein Observable wandern. Zu guter Letzt, kann ich nun diesen Stream noch partitionieren. Beispielsweise interessiere ich mich für alle Kurswerte, bei denen das Volumen über dieser Zahl liegt. Dafür definiere ich zunächst einmal das Observable als Variable, und partitioniere diese Variable auf Basis einer Funktion, die überprüft, ob auf dem Objekt x.volume größer ist als diese Zahl. Dies definiere ich nun als Variable partitioned und in partitioned ist nun ein array, innerhalb dessen sich nun zwei Observables befinden. Also an Position 0, alle Werte, die über diesem Volumen liegen, und in partitioned 1, also dem zweiten Eintrag des arrays, alle Werte, die unterhalb dieses Volumens liegen. Wenn ich mich also nur für die Werte oberhalb interessiere, kann ich auch auf dieses Observable einen subscribe, mit der console.log Funktion setzen. Man sieht nun, dass unter bestimmten Umständen, wenn das Volumen nicht dementsprechend hoch war, bestimmte Werte nicht durch dieses Observable laufen. Mit Hilfe der Operatoren auf Basis von rxjs, kann ich also einen kontinuierlichen Stream von Daten, nach mir beliebigen Operationen verarbeiten.

JavaScript: Asynchrone Programmierung

Lernen Sie Lösungen für die komplexe Anwendungsentwicklung kennen, um zeitaufwändige Ressourcenzugriife im Code zu vermeiden.

2 Std. 30 min (19 Videos)
Derzeit sind keine Feedbacks vorhanden...
 
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:22.08.2016

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!