Callback
Коротко
Функция, которую передают в другой код как аргумент, чтобы тот вызвал её позже — по событию, после завершения операции или для каждого элемента данных.
Что такое «Callback»
По-русски говорят «функция обратного вызова» или просто «колбэк». Идея в том, что вы не вызываете функцию сами, а отдаёте её другому коду со словами «позови, когда понадобится». Так библиотека или движок может выполнить вашу логику в нужный момент, не зная о ней заранее.
Колбэки встречаются в двух ситуациях. Первая — синхронная: функция сортировки или обхода массива вызывает переданную функцию для каждого элемента. Вторая — асинхронная: результат появится позже, например когда придёт ответ сервера или пользователь нажмёт кнопку.
Пример на PHP и в WordPress
// Сортировка товаров по цене: колбэк сравнивает два элемента
usort($products, fn($a, $b) => $a['price'] <=> $b['price']);
// WordPress вызовет функцию, когда дойдёт до события wp_footer
add_action('wp_footer', function () {
echo '<!-- footer loaded -->';
});
Вся система хуков WordPress построена на колбэках: add_action и add_filter лишь запоминают функцию, а вызывает её ядро. Подробнее о механизме — в статье про хуки WordPress. В PHP колбэком может быть имя функции строкой, анонимная функция или массив из объекта и имени метода.
В JavaScript
В браузере колбэки повсюду: addEventListener('click', handler), setTimeout(fn, 1000), методы массивов map и filter. Функция, которая принимает другую функцию, называется функцией высшего порядка.
«Ад колбэков» и что с ним делают
Когда асинхронные шаги идут друг за другом, колбэки вкладываются один в другой: загрузить пользователя, затем его заказы, затем статус доставки. Код уходит вправо лесенкой, а обработку ошибок приходится повторять на каждом уровне. Эту проблему решили промисы и синтаксис async/await: тот же сценарий записывается плоско, сверху вниз, с одним блоком try/catch. Колбэки при этом не исчезли — они остались основой обработчиков событий и функциональных методов.

