aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/callback_function
diff options
context:
space:
mode:
Diffstat (limited to 'files/ru/glossary/callback_function')
-rw-r--r--files/ru/glossary/callback_function/index.html71
1 files changed, 71 insertions, 0 deletions
diff --git a/files/ru/glossary/callback_function/index.html b/files/ru/glossary/callback_function/index.html
new file mode 100644
index 0000000000..1c9118e4b5
--- /dev/null
+++ b/files/ru/glossary/callback_function/index.html
@@ -0,0 +1,71 @@
+---
+title: Функция обратного вызова
+slug: Glossary/Callback_function
+tags:
+ - Callback
+ - Функция обратного вызова
+translation_of: Glossary/Callback_function
+original_slug: Словарь/функция_обратного_вызова
+---
+<p>Функция обратного вызова - это функция, переданная в другую функцию в качестве аргумента, которая затем вызывается по завершению какого-либо действия.</p>
+
+<p>Вот краткий пример:</p>
+
+<pre class="brush: js">function greeting(name) {
+ alert('Hello ' + name);
+}
+
+function processUserInput(callback) {
+ var name = prompt('Please enter your name.');
+ callback(name);
+}
+
+processUserInput(greeting);</pre>
+
+<p>Выше приведен пример <a href="/en-US/docs/Glossary/Synchronous">синхронного</a> обратного вызова, поскольку функция <code>processUserInput</code> выполняется синхронно.</p>
+
+<p>Функции обратного вызова часто используются для продолжения выполнения кода после завершения <a href="/ru/docs/%D0%A1%D0%BB%D0%BE%D0%B2%D0%B0%D1%80%D1%8C/Asynchronous">асинхронной</a> операции - они называются асинхронными обратными вызовами.</p>
+
+<pre class="brush: js">async function pageLoader(callback) {
+  const data = await fetch('/ru/docs/Словарь/функция_обратного_вызова')
+  callback(data)
+}
+
+function onPageLoadingFinished(pageData) {
+  console.log('Page was sucessfully loaded!')
+  console.log('Response:')
+  console.log(pageData)
+}
+
+pageLoader(onPageLoadingFinished)
+</pre>
+
+<p>Вот еще один пример асинхронного обратного вызова: <a href="https://github.com/mdn/learning-area/blob/master/javascript/apis/introduction/maps-example.html">maps-example.html</a> (<a href="http://mdn.github.io/learning-area/javascript/apis/introduction/maps-example.html">живой пример</a>). Он использует Google Maps API и Geolocation API для отображения карты текущего местоположения вашего устройства.</p>
+
+<pre class="brush: js">// maps-example.html
+// Вызов асинхронной функции getCurrentPosition
+// с передачей callback функции принимающей координаты
+// в качестве параметра
+navigator.geolocation.getCurrentPosition(function(position) {
+  var latlng = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
+  var myOptions = {
+    zoom: 8,
+    center: latlng,
+    mapTypeId: google.maps.MapTypeId.TERRAIN,
+    disableDefaultUI: true
+  }
+  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
+});
+</pre>
+
+<p>Поскольку получение координат устройства из его GPS является асинхронным (мы точно не знаем, когда данные будут возвращены), метод <code>Geolocation.getCurrentPosition()</code> принимает анонимную функцию обратного вызова в качестве параметра, которая получает найденые данные координат. Эта функция выполняется только по возвращению данных координат.</p>
+
+<h2 id="Больше_информации"><strong>Больше информации</strong></h2>
+
+<h3 id="Основное"><strong>Основное</strong></h3>
+
+<ul>
+ <li><a href="https://en.wikipedia.org/wiki/Callback_(computer_programming)">Сallback на Wikipedia</a></li>
+ <li><a href="https://learn.javascript.ru/custom-events">Коллбэки и события на компонентах</a></li>
+ <li><a href="http://callbackhell.ru/">Ад обратных вызовов</a></li>
+</ul>