Какво е callback?
Callback е функция, която се предава като аргумент на друга функция и се извиква, когато първата функция приключи своето изпълнение.
В JavaScript, използването на callback функции е много често и се използва, когато е необходимо да се изчака завършването на определена операция, преди да продължи изпълнението на други операции. Пример за това е зареждането на файлове от диска, където трябва да се изчака завършването на операцията за зареждане на файл, преди да може да се продължи с друга операция.
Ето един пример за използване на callback функция в JavaScript:
function sayHello(name, callback) {
console.log("Hello, " + name);
callback();
}
function sayGoodbye() {
console.log("Goodbye!");
}
sayHello("John", sayGoodbye);
В този пример функцията sayHello() приема два параметъра: name и callback. Първият параметър е името на човека, към когото ще бъде изписано "Hello", а вторият параметър е callback функцията, която ще бъде извикана след изпълнението на функцията sayHello(). В тази конкретна ситуация, след като е изписано "Hello, John", callback функцията sayGoodbye() се извиква и в конзолата се изписва "Goodbye!".
Друг пример за използване на callback функции, е при работа с асинхронни операции, като например зареждане на данни от уеб сървъри чрез AJAX заявки. В този случай, когато заявката за данни е изпратена, ние не знаем колко време ще отнеме за зареждане на данните и не искаме да блокираме изпълнението на кода до получаване на отговора от сървъра.
Ето един пример за използване на callback функция при AJAX заявки в JavaScript:
function loadData(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("GET", url, true);
xhr.onload = function() {
if (xhr.status === 200) {
callback(xhr.responseText);
}
};
xhr.send();
}
function displayData(data) {
console.log(data);
}
loadData("https://example.com/data", displayData);
В този пример, функцията loadData() изпраща заявка за данни на URL адреса, предаден като първи аргумент. След като заявката е изпратена, се чака за отговор от сървъра, а когато отговорът е получен, се извиква callback функцията, която е предадена като втори аргумент на функцията loadData(). В конкретния случай, функцията displayData() просто изписва получените данни в конзолата.