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

Что такое закрытия и обратные вызовы в JavaScript? Я должен все же найти хорошее объяснение также.

20
задан TylerH 31 January 2017 в 04:34
поделиться

1 ответ

Clossures уже хорошо обработаны в Stackoverflow - это просто selection:-

Как работает javascript-закрытие?
На что именно ссылается "закрытие" в JavaScript?
Можно сказать, что это правильный пример Javascript-закрытия... Где места, которые нам нужно рассмотреть, чтобы избежать замыкания?
JavaScript scope и closure
Javascript Closures и "this" context
JavaScript - Как мне узнать об использовании "замыкания"?

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

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

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

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

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

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

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

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

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

39
ответ дан 29 November 2019 в 23:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: