проблема с функцией обратного вызова в JavaScript - PullRequest
1 голос
/ 06 октября 2010

Я пытаюсь понять функции обратного вызова в javascript.

Существует функция, похожая на

function load() {

 var func = function(data){
  ///

 };
}

Может кто-нибудь объяснить мне, откуда будет возвращен параметр "данные", какЯ не вижу никакой переменной, объявленной в файле.

1 Ответ

3 голосов
/ 06 октября 2010

В JavaScript функциями являются объекты первого класса .Вы можете хранить их в объектах (переменных) и передавать их в качестве аргументов функциям.Каждая функция на самом деле является Function объектом.

В этом примере у вас нет функции обратного вызова.У вас будет одна, когда вы передадите функцию в качестве аргумента другой функции.

Это функция, которая вызывает функцию обратного вызова, когда она будет готова:

function load (ready_callback) {
   // do some stuff

   ready_callback();
}

, которую можно вызватьследующим образом:

function callback () {
   alert('Ready');
}

load(callback);

Или:

var callback = function () {
   alert('Ready');
}

load(callback);

Или:

load(function () {
   alert('Ready');
});

Три приведенных выше примера в значительной степени эквивалентны.

Обратный вызовфункции обычно используются для обработки событий и асинхронных методов.Одним из примеров является метод setTimeout(), который вызывает функцию обратного вызова по истечении времени ожидания:

var timerCallback = function () {
   alert('Timeout Expired!');
}

setTimeout(timerCallback, 5000);  // Set the timeout to 5 seconds
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...