Колбэк функции
Колбэк функция callback function
это обычная функция, которая вызывается внутри другой функции. Такие функции ещё называются функциями обратного вызова. Они очень часто применяются в асинхронном коде и не только. Передаётся колбэк функция в другую через аргумент:
// колбэк функция
function callback() {
console.log("Сработала функция: callback");
}
// функция, которая будет принимать на вход колбэк функцию
function myFunc(callback) {
console.log("Сработала функция: myFunc");
callback();
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callback
myFunc(callback);
Таким образом, функция callback
вызывается внутри функции myFunc
, в неё она передаётся как аргумент. Без вызова myFunc
функция callback
не вызовется, т.к. она вызывается только внутри myFunc
.
Пример посложней:
// колбэк функция
function callback(text, elem, arr) {
elem.innerHTML = text;
elem.innerHTML += arr.join("-");
}
// функция, которая будет принимать на вход колбэк функцию
function myFunc(text, callback2) {
let arr = [1, 2, 3];
let elem = document.querySelector("div");
callback2(text, elem, arr);
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callback
myFunc("Вывод: ", callback);
Тоже самое с использованием стрелочной функции:
// функция, которая будет принимать на вход колбэк функцию
function myFunc(text, callback2) {
let arr = [1, 2, 3];
let elem = document.querySelector("div");
callback2(text, elem, arr);
}
// вызываем функцию myFunc() вместе с колбэк функцией
myFunc("Вывод: ", (text, elem, arr) => {
elem.innerHTML = text;
elem.innerHTML += arr.join("-");
});
Колбэк функция с таймером:
// колбэк функция
function callback() {
document.body.style.backgroundColor = "#00ff00";
}
// функция, которая будет вызывать функцию callback через 3 секунды
setTimeout(callback, 3000);
Возможны ситуации, когда одна колбэк функция вызывает другую колбэк функцию. Всё это возможно, благодаря тому, что функции являются объектами. А так как функция является объектом, её как значение можно передавать в другие функции посредством аргументов.