Коллбэк (callback) – это обычная функция, но которая должна быть вызвана при каком-то событии. Для этого мы передаем наш коллбэк в некоторую функцию. Эта функция потом просто вызовет нашу функцию-коллбэк, которую мы ей передали.
Аналогия: мы звоним в клинику, а там нам отвечают, что все операторы заняты, и предлагают оставить свой номер, чтобы они перезвонили. Это и есть пример коллбэка (с английского, кстати, так дословно и переводится – перезвонить обратно или обратный вызов).
То есть мы оставили номер, на который нужно перезвонить, когда освободится оператор.
Также и в программировании: мы передаем функцию, которую нужно вызвать при наступлении некоторого события или при выполнении каких-то условий.
Пример
Мы написали функцию (1), которая имитирует работу таймера.
При срабатывании таймера мы хотим узнать об этом и как-то среагировать. Для этого в функцию таймера передается коллбэк, то есть функция, которую нужно вызвать (3) по истечении заданного времени.
Также написали два коллбэка: (4) и (5).
В главной функции (6) запускаем два таймера, в которые передаем первый и второй наши коллбэки.
При срабатывании таймеров вызываются коллбэки: через 3 секунды первый, а потом через 5 секунд и второй. Таким образом мы узнаем, что время истекло, и можем сделать какие-то действия в нашей программе. В данном случае мы просто выводим текстовые сообщения.
Вывод работы скрипта:
-- start timer
-- timer end
Alarm
-- start timer
-- timer end
ALARM !!!
#python #junior #callbacks