Функція зворотного виклику

{{GlossarySidebar}}

Функція зворотного виклику (ФЗВ, колбек) – це функція, що передається до іншої функції як аргумент, який потім закликається всередині зовнішньої функції, щоб завершити якогось роду процедуру або дію.

Споживач API на основі функцій зворотного виклику пише функцію, яка передається до API. Постачальник API (його звуть викликачем) приймає цю функцію та робить зворотний її виклик (або виконує її) в якомусь місці всередині свого тіла. Викликач відповідає за передачу до функції зворотного виклику правильних параметрів. Також він може розраховувати якесь конкретне повернене значення з функції зворотного виклику, яке використовується для вказання викликачу подальшої поведінки.

Є два способи, якими може бути викликана функція зворотного виклику: синхронно та асинхронно. Синхронні функції зворотного виклику викликаються негайно після заклику зовнішньої функції, без проміжних асинхронних завдань, тоді як асинхронні функції зворотного виклику викликаються в якийсь момент пізніше, після завершення асинхронної операції.

Розуміння того, чи функція зворотного виклику викликається синхронно, чи асинхронно, особливо важливе при аналізі побічних ефектів. Розгляньмо наступний приклад:

let value = 1;

doSomething(() => {
  value = 2;
});

console.log(value);

Якщо doSomething викликає функцію зворотного виклику синхронно, то остання інструкція виведе 2, оскільки value = 2 виконується синхронно; інакше, якщо функція зворотного виклику є асинхронною, то остання інструкція виведе 1, оскільки value = 2 виконується лише після інструкції console.log.

Серед прикладів синхронних функцій зворотного виклику – ті, що передаються до Array.prototype.map(), Array.prototype.forEach() тощо. Серед прикладів асинхронних функцій зворотного виклику – ті, що передаються до setTimeout() і Promise.prototype.then().

Посібник Використання промісів містить більше інформації про хронометраж асинхронних функцій зворотного виклику.

Дивіться також