Колбэк функции
Колбэк функция callback function это обычная функция, которая вызывается внутри другой функции. Такие функции ещё называются функциями обратного вызова. Они очень часто применяются в асинхронном коде и не только. Передаётся колбэк функция в другую через аргумент:
// колбэк функция
function callbackFunc() {
console.log("Сработала функция: callback");
}
// функция, которая будет принимать на вход колбэк функцию
function myFunc(callbackFunction) {
console.log("Сработала функция: myFunc");
callbackFunction();
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callback
myFunc(callbackFunc);
Таким образом, функция callbackFunc() вызывается внутри функции myFunc, в неё она передаётся как аргумент. Без вызова myFunc функция callback не вызовется, т.к. она вызывается только внутри myFunc.
Колбэк функция параметрами
Пример посложней, с параметрами:
// колбэк функция
function callbackFunc(nameCallback) {
console.log(`Сработала функция: ${nameCallback}`);
}
// функция, которая будет принимать на вход колбэк функцию и параметры
function myFunc(nameMyFunc, nameCallback, callbackFunction) {
console.log(`Сработала функция: ${nameMyFunc}`);
callbackFunction(nameCallback);
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callbackFunc
myFunc('myFunc', 'callbackFunc', callbackFunc);
Тоже самое с использованием стрелочной функции:
// колбэк функция
let callbackFunc = (nameCallback) => {
console.log(`Сработала функция: ${nameCallback}`);
}
// функция, которая будет принимать на вход колбэк функцию и параметры
let myFunc = (nameMyFunc, nameCallback, callbackFunction) => {
console.log(`Сработала функция: ${nameMyFunc}`);
callbackFunction(nameCallback);
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callbackFunc
myFunc('myFunc', 'callbackFunc', callbackFunc);
Колбэк функция с таймером
// колбэк функция
let callbackFunc = (nameCallback) => {
console.log(`Сработала функция: ${nameCallback}`);
}
// функция, которая будет принимать на вход колбэк функцию и параметры
let myFunc = (nameMyFunc, nameCallback, callbackFunction) => {
console.log(`Сработала функция: ${nameMyFunc}`);
setTimeout(() => {
console.log(`Сработала setTimeout`);
callbackFunction(nameCallback);
}, 5000);
}
// вызываем функцию myFunc() и передаём ей в качестве аргумента колбэк функцию callbackFunc
myFunc('myFunc', 'callbackFunc', callbackFunc);
Возможны ситуации, когда одна колбэк функция вызывает другую колбэк функцию. Всё это возможно, благодаря тому, что функции являются объектами. А так как функция является объектом, её как значение можно передавать в другие функции посредством аргументов.