Обратные вызовы, позвольте мне попытаться объяснить это так, чтобы вы могли понять.
- Во-первых, вам нужно понять, как функция может быть назначена переменной без выполнения.
Это позволяет вам передавать функции и выполнять их только тогда, когда вы хотите, вот пример того, как я могу передать функцию в переменную и не выполнять ее:
a = function(){}
Это небольшойВ качестве примера и наиболее распространенного, вы бы назвали функцию, такую как a()
, добавив ()
, который сообщает функции для выполнения.
- Теперь вы должны понимать, что вы можете передавать эти переменные в другую функцию, новызывая их
, приведенный ниже пример показывает, как вы можете передать функцию в вышеуказанную функцию a
во время ее выполнения.
b = function(){}
b(a);
- следующий шаг -возможность создавать анонимные функции, они позволят вам назначить функцию переменной при переходе в другую функцию
анонимная функция неподписан в момент написания, но назначается, когда он анализируется в области внешних функций.
вышеизложенное может быть немного сложным для понимания, но, надеюсь, пример прояснит его.
a(
function(){}
);
Выше приведено то же, что и в примере b(a)
, за исключением того, что a
теперь является анонимной функцией и присваивается только переменной внутри b
, то есть внешней функции.
jQuer'iesAPI в значительной степени опирается на анонимные функции, так как они просты в использовании и создают отделение от jQuery Core и пользовательского кода, пользователю не нужно сильно полагаться на основной код jQuery, но нужно передать обратный вызов, чтобы позволить jQuery подключаться к вашему коду.
пример функции, которая использует аналогичные средства передачи данных в функции и из них, выглядит примерно так:
JoinUser = function(Firstname,Lastname,callback)
{
Fullname = Firstname + " " + Lastname;
callback(Fullname);
}
JoinUser("Robert","Pitt",function(Fullname)
{
alert(Fullname); //Robert Pitt
})
В приведенном выше примере только приблизительно показано, как работает стиль jQuery., но не самое важное преимущество обратных вызовов, и это Ajax.
Ajax может остановить сценарий JavaScript до тех пор, пока его данныенапример, было получено:
Result = RequestPage("Contacts");
когда Ajax видит эту строку, он должен дождаться, пока RequestPage
вернет результат, поскольку ожидается, что кодирование, расположенное ниже, потребует этого значения, поэтому мы должны наблюдатьесли данные будут возвращены с сервера до продолжения работы JavaScript, это может занять несколько секунд, и пользовательский интерфейс будет работать ненормально.
Чтобы обойти это, нужно отправить обратный вызов функции и сообщить ейвызовите, когда все выполнено, как я хочу, чтобы работать с остальной частью приложения.
RequestPage("Contacts",function(){});
, поэтому теперь JavaScript продолжает работу вниз по странице, выполняя нужную ему задачу, и внутри функции RequestPage
он будет заложенвот так:
function RequestPage(page,callback)
{
//..
request.oncomplete = callback;
//..
}
Таким образом, остальная часть вашего приложения выполнила другую задачу, и когда результат будет готов, вы можете изменить пользовательский интерфейс для получения результата.
Именно поэтому мыиспользуйте загрузчики для репликации рабочего состояния.
Я надеюсь, вы начнете понимать, как jQuery использует преимущества этих факторов javaScript, и это поможетр вы разрабатываете приложение.