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
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`
JavaScript geri arama fonksiyonları da...
Javascript geri arama ne zaman İFRAME ...
Birden fazla ajax aramalar için Javasc...
Nasıl bir javascript geri arama güncel...
JavaScript Geri Arama Kapsamı...