Обратные вызовы и Функции

В отличие от многих других языков программирования, JavaScript позволяет Вам свободно передавать функции, которые будут выполняться в более позднее время. Обратный вызов является функцией, которую передают как параметр другой функции и которая выполняется после того, как ее родительская функция завершилась.

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

Чтобы использовать обратные вызовы, важно знать, как передать их в их родительскую функцию.

Обратный вызов без Параметров

Если у обратного вызова нет никаких параметров, можно передать его так:

$.get( "myhtmlpage.html", myCallBack );

Когда $.get() завершается, получая страницу myhtmlpage.html, он выполняет функцию myCallBack().

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

Обратный вызов с Параметрами

Выполнение обратных вызовов с параметрами может быть более хитрым.

Неправильно

Этот пример кода не будет работать:

$.get( "myhtmlpage.html", myCallBack( param1, param2 ) );

Причина, которая приводит это к сбою, состоит в том, что код выполняет myCallBack( param1, param2 ) сразу и затем передает возвращаемое значение myCallBack() как второй параметр к $.get(). Мы фактически хотим передать функцию myCallBack(), а не возвращаемое значение myCallBack( param1, param2 ) (который может быть, а может и не быть функцией). Так, как передать ее в myCallBack() и включить ее параметры?

Правильный вариант

Отложить выполнение myCallBack() с ее параметрами можно с помощью использования анонимной функции в качестве обертки. Отметьте использование function() {. Анонимная функция делает только одну вещь: вызывает myCallBack() со значениями param1 и param2.

$.get( "myhtmlpage.html", function() { myCallBack( param1, param2 ); });

Когда $.get() завершает получение страницы myhtmlpage.html, он выполняет анонимную функцию, которая выполняет myCallBack( param1, param2 ).

Далее: Основы Синтаксиса JavaScript

Смотрите также
Комментарии
Написать

(обязательно)

(обязательно)

Это не спам (обязательно)