--- title: Функция обратного вызова slug: Glossary/Callback_function tags: - Callback - Функция обратного вызова translation_of: Glossary/Callback_function original_slug: Словарь/функция_обратного_вызова ---
Функция обратного вызова - это функция, переданная в другую функцию в качестве аргумента, которая затем вызывается по завершению какого-либо действия.
Вот краткий пример:
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()
принимает анонимную функцию обратного вызова в качестве параметра, которая получает найденные данные координат. Эта функция выполняется только по возвращению данных координат.