Knackpunkte bei der Klasse AsyncCommunication
31. März 2009 Roland
- Programmierung
- Variablenzuweisungen und Berechnungen
- Alter berechnen nur mit JavaScript
- Alter berechnen mit und ohne Javascript
- Code Optimierung
- Client Server Applikationsarchitektur
- Eigenschaften eines Webbrowsers
- Stylesheets
- Interaktive Webclients
- Mit HTML, oder SVG, interaktive Ein- Ausgaben erstellen
- Mit JavaScript aus einem Dokument Daten lesen
- Der Webserver
- Webserver-seitige Programmierung
- Datenbankanbindung
- Architekturprinzip Separation of Concerns
- Beschreibung von Anwendungsfällen
- Mit JavaScript einen wiederkehrenden Event erzeugen
- Kommunikationswege bei Einsatz von Java auf dem Webclient
- Einbinden der JavaScript Timer Klasse in eine Webseite
- AJAX Kommunikation ohne Fassaden Pattern
- JavaScript Klassen mit Object-Literal Syntax erstellen
- Knackpunkte bei der Klasse AsyncCommunication
- Speicherverbrauch in AJAX Applikationen
- Auch bei JavaScript immer die Variablen sauber deklarieren
- Eventhandler im JavaScript mit dem HTML Dokument verknüpfen
- Objekte in JavaScript mit JSON deklarieren
Im Artikel Asynchrone Kommunikation mit JavaScript und Facade Pattern habe ich eine Beispielklasse für die asynchrone Kommunikation erläutert.
Ich möchte noch kurz auf ein paar Programmzeilen eingehen, die ich darin verwendet habe und die vermutlich nicht sehr einfach zu verstehen sind.
Zuerst übergebe ich dem Konstruktor die später aufzurufende Callback Funktion. Diese wird in der Zeile
-
this.callBackFunction = callBackFunc;
in die callBackFunction Variable eingetragen.
Hier ist zuerst einmal festzustellen, dass dieser Funktion kein String mit Anführungszeichen sondern der Name der Funktion ohne Anführungszeichen mitgegeben wird.
Also beim Aufruf des Konstruktors beispielsweise:
-
this.asyncCommunication = new AsyncCommunication(showHello);
Das war für mich zumindest ein wenig anders als dass was ich erwartet hätte. Naja, bin halt ein alter C, C++ und Java Hacker…
Dann der Aufruf der Callback Funktion:
-
var loader=this;
-
this.request.onreadystatechange=function(){
-
loader.callBack.call(loader);
-
}
Hiermit wird dem onreadystatechange eine dynamische Funktion, die wir in unserer Klasse deklariert haben, übergeben. Die Schreibweise ist vielleicht ein wenig Gewohnheitsbedürftig. Ich interpretiere dies so, dass eine Funktion deklariert wird, die über die Instanz loader.callback aufgerufen werden kann. Zuvor wird this dem loader zugewiesen.
Der Rest ist ziemlich geradeaus programmiert.
Mit
-
if(readyState == this.READY_STATE_COMPLETE){
-
this.callBackFunction.call(this);
-
}
wird die Funktion, die wir ja vorher unserem Konstruktor übergeben haben, aufgerufen.
Ich hoffe, ich konnte hiermit alle Klarheiten beseitigen und du verstehst nun den Code so gut, dass du ihn verwenden und nach deinen Wünschen abändern kannst.
Viel Spaß damit!
Der Beitrag wurde
am Dienstag, den 31. März 2009 um 13:37 Uhr veröffentlicht
und wurde unter Programmieren abgelegt.
Kurzlink: http://www.baldenhofer.eu/blog/?p=678
Dir gefiel der Artikel? Dann abonniere doch den RSS Feed![]()
Du kannst die Kommentare zu diesem Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.








