aboutsummaryrefslogtreecommitdiff
path: root/files/ru/glossary/callback_function
diff options
context:
space:
mode:
authorFlorian Merz <me@fiji-flo.de>2021-02-11 14:51:05 +0100
committerFlorian Merz <me@fiji-flo.de>2021-02-11 14:51:05 +0100
commitc058fa0fb22dc40ef0225b21a97578cddd0aaffa (patch)
treedf20f8b4c724b61cb9c34cdb450a7ac77d690bd0 /files/ru/glossary/callback_function
parent8260a606c143e6b55a467edf017a56bdcd6cba7e (diff)
downloadtranslated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.gz
translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.tar.bz2
translated-content-c058fa0fb22dc40ef0225b21a97578cddd0aaffa.zip
unslug ru: move
Diffstat (limited to 'files/ru/glossary/callback_function')
-rw-r--r--files/ru/glossary/callback_function/index.html70
1 files changed, 70 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..b1433d4ee8
--- /dev/null
+++ b/files/ru/glossary/callback_function/index.html
@@ -0,0 +1,70 @@
+---
+title: Функция обратного вызова
+slug: Словарь/функция_обратного_вызова
+tags:
+ - Callback
+ - Функция обратного вызова
+translation_of: Glossary/Callback_function
+---
+<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>