From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../index.html" | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 "files/ru/\321\201\320\273\320\276\320\262\320\260\321\200\321\214/\321\204\321\203\320\275\320\272\321\206\320\270\321\217_\320\276\320\261\321\200\320\260\321\202\320\275\320\276\320\263\320\276_\320\262\321\213\320\267\320\276\320\262\320\260/index.html" (limited to 'files/ru/словарь/функция_обратного_вызова/index.html') diff --git "a/files/ru/\321\201\320\273\320\276\320\262\320\260\321\200\321\214/\321\204\321\203\320\275\320\272\321\206\320\270\321\217_\320\276\320\261\321\200\320\260\321\202\320\275\320\276\320\263\320\276_\320\262\321\213\320\267\320\276\320\262\320\260/index.html" "b/files/ru/\321\201\320\273\320\276\320\262\320\260\321\200\321\214/\321\204\321\203\320\275\320\272\321\206\320\270\321\217_\320\276\320\261\321\200\320\260\321\202\320\275\320\276\320\263\320\276_\320\262\321\213\320\267\320\276\320\262\320\260/index.html" new file mode 100644 index 0000000000..b1433d4ee8 --- /dev/null +++ "b/files/ru/\321\201\320\273\320\276\320\262\320\260\321\200\321\214/\321\204\321\203\320\275\320\272\321\206\320\270\321\217_\320\276\320\261\321\200\320\260\321\202\320\275\320\276\320\263\320\276_\320\262\321\213\320\267\320\276\320\262\320\260/index.html" @@ -0,0 +1,70 @@ +--- +title: Функция обратного вызова +slug: Словарь/функция_обратного_вызова +tags: + - Callback + - Функция обратного вызова +translation_of: Glossary/Callback_function +--- +

Функция обратного вызова - это функция, переданная в другую функцию в качестве аргумента, которая затем вызывается по завершению какого-либо действия.

+ +

Вот краткий пример:

+ +
function greeting(name) {
+  alert('Hello ' + name);
+}
+
+function processUserInput(callback) {
+  var name = prompt('Please enter your name.');
+  callback(name);
+}
+
+processUserInput(greeting);
+ +

Выше приведен пример синхронного обратного вызова, поскольку функция processUserInput выполняется синхронно.

+ +

Функции обратного вызова часто используются для продолжения выполнения кода после завершения асинхронной операции - они называются асинхронными обратными вызовами.

+ +
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)
+
+ +

Вот еще один пример асинхронного обратного вызова: maps-example.html (живой пример). Он использует Google Maps API и Geolocation API для отображения карты текущего местоположения вашего устройства.

+ +
// 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);
+});
+
+ +

Поскольку получение координат устройства из его GPS является асинхронным (мы точно не знаем, когда данные будут возвращены), метод Geolocation.getCurrentPosition() принимает анонимную функцию обратного вызова в качестве параметра, которая получает найденые данные координат. Эта функция выполняется только по возвращению данных координат.

+ +

Больше информации

+ +

Основное

+ + -- cgit v1.2.3-54-g00ecf