В большинстве случаев при написании кода он выполняется в последовательном порядке. Как и в приведенном ниже примере, сначала создается x, которому присваивается значение 1, затем создается y и присваивается значение 2, затем, наконец, создается sum, которому присваивается значение x + y. Хороший. Простой. Чистый. Однако приведенный ниже код довольно прост. Некоторые основные назначения и арифметики. Эти действия также не занимают много времени, поэтому они выполняются почти мгновенно. Что происходит, когда все становится сложнее? Что происходит, когда выполнение кода еще не завершено, а вызывается следующая строка или вам нужно дождаться завершения предыдущего фрагмента кода, прежде чем переходить к следующему шагу? Поприветствуйте обратные вызовы.

Когда мы вводим более сложный код, мы можем столкнуться с проблемой асинхронного программирования. Что такое асинхронное программирование? Асинхронное программирование — это когда код вызывается до завершения выполнения предыдущего кода. Это очень распространено при работе с функциями и API или даже обращениями к базам данных.

Обратные вызовы — это решение, но они могут быть немного сложными. По своей сути функция обратного вызова — это просто параметр другой функции. Кроме того, и функции, и обратные вызовы практически одинаковы. Обратные вызовы имеют свой собственный набор кода, их можно вызывать теми же способами, что и обычную функцию, и они могут даже иметь свои собственные функции обратного вызова, но это входит в область ада обратных вызовов, и мы стараемся туда не заходить.

Это самый простой пример функции обратного вызова. У нас есть две функции processUserInput, которая является обычной функцией, и greeting, которая является функцией обратного вызова, поскольку она передается в processUserInput в качестве параметра. processUserInput запрашивает у пользователя его имя, а затем передает переменную имени в greeting и уведомляет о сообщении. Без обратного вызова вполне вероятно, что оповещение произойдет до того, как пользователь успеет ответить на приглашение.

Я надеюсь, что вы нашли это введение в обратные вызовы информативным, и не забудьте держаться подальше от ада обратных вызовов.

По известным словам Эллиота Уитта, "[обратный вызов] не очень сложен, но может быть немного сложным"