« »

Knackpunkte bei der Klasse AsyncCommunication

31. März 2009 Roland

Dieser Artikel ist Teil 22 von 26 der Artikelserie Programmieren

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

  1. 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:

  1. 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:

  1. var loader=this;
  2. this.request.onreadystatechange=function(){
  3.     loader.callBack.call(loader);
  4. }

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

  1. if(readyState == this.READY_STATE_COMPLETE){
  2.     this.callBackFunction.call(this);
  3. }

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!

Merken und weiterempfehlen Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Technorati
  • Wikio DE
  • Webnews
  • MisterWong
  • Y!GG
  • Digg
  • del.icio.us

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 Feedrss

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.

...deine Chance den ersten Kommentar zu schreiben... ;-)

Schreibe mir

zum Seitenanfang