Aslında, kodunuz hemen hemen olduğu gibi çalışacaktır, sadece geri çağrınızı bir argüman olarak ilan edin ve doğrudan argüman adını kullanarak arayabilirsiniz.
Temeller
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);
Yani arayacak doSomethingarayacak olan foo, "şeyler buraya gelecektir" uyaracaktır hangi.
İşlevi çağırmak ve sonucunu ( ) iletmek yerine, reference ( foo) işlevini iletmenin çok önemli olduğunu unutmayın foo(). Sorunuzda, düzgün bir şekilde yapıyorsunuz, ancak dikkat çekmeye değer çünkü bu yaygın bir hatadır.
Daha gelişmiş şeyler
Bazen geri aramayı aramak istersiniz, böylece belirli bir değer görür this. Bunu JavaScript callişleviyle kolayca 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 argümanları iletebilirsiniz:
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 geri çağırma vermek istediğiniz bağımsız değişkenleri tek tek değil, bir dizi olarak iletmek yararlı olabilir. Bunu applyyapmak 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`
object.LoadData(success)çağrı tanımlandıktan sonra olmalıdırfunction success. Aksi takdirde, işlevin tanımlanmadığını bildiren bir hata alırsınız.