Подтвердить что ты не робот

Что такое закрытие и обратные вызовы?

Что такое закрытие и обратные вызовы в JavaScript? Мне еще предстоит найти хорошее объяснение.

4b9b3361

Ответ 1

Закрытие уже хорошо обработано в Stackoverflow, это всего лишь выбор: -

Как работает закрытие javascript?
Что именно означает "закрытие" в JavaScript?
можете ли вы сказать, что это правильный пример закрытия Javascript. Где места, которые мы должны рассмотреть, чтобы избежать закрытия? Область и закрытие JavaScript
Закрытие Javascript и "этот контекст"

JavaScript - Как узнать о "закрытии" использования?

Обратные вызовы - это более простая концепция. Обратный вызов в основном там, где функция принимает другую функцию в качестве параметра. В какой-то момент во время выполнения вызываемая функция выполняет функцию, переданную как параметр, это обратный вызов. Довольно часто обратный вызов фактически происходит как асинхронное событие, и в этом случае вызываемая функция может вернуться без выполнения обратного вызова, что может произойти позже. Вот общий пример (на основе браузера): -

 function fn() { alert("Hello, World"); }
 window.setTimeout(fn, 5000);

Здесь функция fn передается как обратный вызов функции setTimeout. Установка таймаута возвращается немедленно, однако через 5 секунд выполняется функция, переданная как обратный вызов.

Закрытия и обратные вызовы

Довольно часто причина создания замыканий (случайно, случайно или преднамеренно) заключается в необходимости создания обратного вызова. Например: -

 function AlertThisLater(message, timeout)
 {
     function fn() { alert(message); }
     window.setTimeout(fn, timeout);
 }

 AlertThisLater("Hello, World!", 5000);

(Пожалуйста, ознакомьтесь с некоторыми связанными сообщениями, чтобы схватить затворы)

Создается замыкание, содержащее частично параметр message, fn выполняется через некоторое время после возврата вызова AlertThisLater, но fn все еще имеет доступ к исходному содержимому message.