Как следует из названия, функции обратного вызова анонимные или именованные функции, которые передаются в качестве аргументов другой функции , или вызов AJAX и т. д. и будут выполняться после того, как определенное действие будет завершено механизмом javascript.
Для примера. Вы можете передать функцию обратного вызова, которая будет выполняться после вызова AJAX с данными. Ill использование JQuery для простоты:
$.ajax({
url: "/my-api-path/",
data: myParams
}).done(myCallback);
Здесь myCallback это функция, которая будет выполняться один раз завершает вызов AJAX. Функция обратного вызова в этом случае будет вызываться с объектом ответа, возвращаемым вызовом AJAX. Обратите внимание, как этот обратный вызов был передан как аргумент метода .done, предоставленного API jQuery AJAX.
В другом примере,
setTimeout(
function() {
alert("Im inside a callback function!");
}, 2000);
Здесь функция, которая содержит предупреждение является первым из двух аргументов, переданных методу SetTimeout в JavaScript. Второй - это количество миллисекунд, после которого эта функция должна быть выполнена. Поскольку эта функция не имеет имени, она называется анонимной.
тот же код может быть переписан как:
var myCallback = function(){
alert("Im inside a callback");
};
setTimeout(myCallback, 2000);
Callbacks выполняются немедленно, когда действие завершается. Поэтому после того, как двигатель встретит оператор setTimeout, он сохранит функцию myCallback в ссылке, а затем продолжит выполнение после инструкции setTimeout. По истечении 2 секунд он выполнит свое время для выполнения обратного вызова, поэтому выполнение перейдет к обратному вызову.Затем будет выполнено предупреждение, функция обратного вызова завершится, и выполнение продолжит работу с того места, где оно было, когда прошло 2 секунды, и двигатель перешел на обратный вызов.
Надеюсь, это объясняет, как работают обратные вызовы.
Что вы подразумеваете под событиями? – PeeHaa
событий означает некоторое состояние. –