2007.10.10

Javascript callback’s

Kategori: Programmering — Michael Schøler, Kl. 14:00:11

Nu har jeg manglet en god kilde til et minimalistisk javascript callback eksempel i et stykke tid, så jeg har derfor bidt i det sure æble og strukket et sådanne sammen selv.

  1. var foo = {
  2.  fooCallback: null,
  3.  setCallback: function(callback) {
  4.   this.fooCallback = callback;
  5.  },
  6.  doCallback: function() {
  7.   with (this) {
  8.    if (typeof fooCallback == “function”) {
  9.     fooCallback();
  10.    } else {
  11.     alert(“No foo callback defined.”);
  12.    }
  13.   }
  14.  }
  15. };
  16.  
  17. var bar = {
  18.  barValue: 42,
  19.  callback: function() {
  20.   with (bar) {
  21.    alert(“Success: bar.callback was called!\n+
  22.     “And the bar value is “ + barValue);
  23.   }
  24.  }
  25. };
  26.  
  27. foo.doCallback();
  28. foo.setCallback(bar.callback);
  29. foo.doCallback();

Se eksempel

Man skal lige have tungen lige i munden med hensyn til binding. Bemærk at der inde i bar.callback ikke benyttes “with(this)” men istedet “with(bar)” for at have rette scope når callback funktionen kaldes fra foo objektet.

Herunder er en udgave der kan have multiple callback registreret, og som tager højde for binding og dermed “besværliggører” syntaxen for at tilføje callback funktionerne en smule.  Det kræves nemlig at .apply( obj ) kaldes på den callback man tilføjer for at binding scope kan gøres irrelevant inde i selve callback funktionen.

  1. var foo = {
  2.  fooCallbacks: [],
  3.  addCallback: function(callback) {
  4.   this.fooCallbacks.push(callback);
  5.  },
  6.  doCallback: function() {
  7.   with (this) {
  8.    var i, c = fooCallbacks.length;
  9.    for (i = 0; i < c; i++) {
  10.     if (typeof fooCallbacks[i] == “function”) {
  11.      fooCallbacks[i]();
  12.     }
  13.    }
  14.   }
  15.  }
  16. };
  17.  
  18. var bar = {
  19.  barValue: 42,
  20.  callback: function() {
  21.   with (this) {
  22.    alert(“Success: bar.callback was called!\n+
  23.     “And the bar value is “ + barValue);
  24.    barValue++;
  25.   }
  26.  },
  27.  callback2: function() {
  28.   with (this) {
  29.    alert(“Success: bar.callback2 was called!\n+
  30.     “And the bar value is “ + barValue);
  31.   }
  32.  }
  33. };
  34.  
  35. foo.addCallback(bar.callback.apply(bar));
  36. foo.addCallback(bar.callback2.apply(bar));
  37. foo.doCallback();

Se eksempel

2007.10.10

Advarsel imod PIXMania.com

Kategori: Brok — Michael Schøler, Kl. 12:00:45

Dette er en ganske kort advarsel imod at handle hos PIXMania.com.

Jeg var fornyligt selv ved at hoppe i fælden, men blev heldigvist afsporet af et ikke fungerende kreditkortbetalingssystem på deres site. Fejlen er efter alt at dømme rettet siden hen.

Her er et par gode grunde til IKKE at handle hos dem:

Sørg for at gå i en stor cirkelbue uden om dem!

2007.10.09

Gratis Wii-mote Jacket

Kategori: Brok, Wii — Michael Schøler, Kl. 21:58:30

Så er der kommet svar fra Bergsala A/S, den danske Nintendo forhandler, og jeg trækker derfor alt nedenstående brok i mig igen. 

Gå ind på nintendo.dk under ‘information’ og dernæst
’support’, der finder du dansk bestillingsskema.

Venlig hilsen

Elisabeth, Bergsala A/S - Nintendo DK

Her er det direkte link til bestillingsformularen.

 

Hvis du er nysgerrig og gerne vil læse hvad jeg brokkede mig over indledningsvist kan du trykke på “Fortsæt med at læse” linket. 

(Læs mere…)