SORU
3 ŞUBAT 2010, ÇARŞAMBA


JavaScript özel bir geri arama oluşturma

Yapmam gereken tek şey, geçerli işlev, benim çalışması bittiğinde geri arama fonksiyonu uygulamak için.

function LoadData() 
{
    alert('The data has been loaded');
    //Call my callback with parameters. For example,
    //callback(loadedData , currentObject);
}

Bu fonksiyon için bir tüketici bu gibi olmalıdır:

object.LoadData(success);

function success(loadedData , currentObject) 
{
  //Todo: some action here 
}

Bunu nasıl uygularım?

CEVAP
3 ŞUBAT 2010, ÇARŞAMBA


Aslında, kod, sadece bir argüman olarak geri bildirmek gibi çok çalışacak ve doğrudan değişken adını kullanarak arama yapabilirsiniz.

Temel şeyler

function doSomething(callback) {
    // ...

    // Call the callback
    callback('stuff', 'goes', 'here');
}

function foo(a, b, c) {
    // I'm the callback
    alert(a   " "   b   " "   c);
}

doSomething(foo);

Uyarı foo, çağrı doSomething, arayacak o "şeyler işte".

Çok önemli bir görevi geçmek unutmayınbaşvuru(foo), arama yerine, işlevi ve sonucu (foo()) geçiyor. Soru düzgün yapın, ama sıradan bir hata çünkü bu işaret değer.

Daha gelişmiş şeyler

Bazen belirli bir geri arama aramak istediğinizbağlamgeri belirli bir değeri vardır içinde-örneğin, this değeri bu kadar. Kolayca call fonksiyon JavaScript ile bunu yapabilirsiniz:

function Thing(name) {
    this.name = name;
}
Thing.prototype.doSomething = function(callback) {
    // Call our callback, but using our own instance as the context
    callback.call(this);
}

function foo() {
    alert(this.name);
}

var t = new Thing('Joe');
t.doSomething(foo);  // Alerts "Joe" via `foo`

Ayrıca parametreleri:

function Thing(name) {
    this.name = name;
}
Thing.prototype.doSomething = function(callback, salutation) {
    // Call our callback, but using our own instance as the context
    callback.call(this, salutation);
}

function foo(salutation) {
    alert(salutation   " "   this.name);
}

var t = new Thing('Joe');
t.doSomething(foo, 'Hi');  // Alerts "Hi Joe" via `foo`

Bazen yararlı geri bir dizi olarak, tek tek yerine vermek istediğiniz bir bağımsız değişken olarak geçmek. apply bunu yapmak için kullanabilirsiniz:

function Thing(name) {
    this.name = name;
}
Thing.prototype.doSomething = function(callback) {
    // Call our callback, but using our own instance as the context
    callback.apply(this, ['Hi', 3, 2, 1]);
}

function foo(salutation, three, two, one) {
    alert(salutation   " "   this.name   " - "   three   " "   two   " "   one);
}

var t = new Thing('Joe');
t.doSomething(foo);  // Alerts "Hi Joe - 3 2 1" via `foo`

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Police

    Android Poli

    21 NİSAN 2010
  • FILIPeeeK

    FILIPeeeK

    22 Mayıs 2006
  • NextKsa

    NextKsa

    7 EKİM 2009