Колбек-функції
Last updated
Last updated
Функції - це спеціальний тип даних (об'єкт вищого порядку). Функцію можна зберігати у змінній або передавати у якості аргументу в іншу функцію.
У наступному прикладі: у першому console.log ми вказуємо функцію з круглили дужками і отримуємо результат виконання функції. У другому console.log ми вказуємо функцію без круглих дужок і виводимо в консолі посилання на саму функцію. Тобто функцію можна присвоїти змінній.
Колбек-функція (callback function) - це функція, яка передається в іншу функцію як аргумент. Ця передана функція буде викликана або "зворотно викликана" у певному контексті або після завершення певної операції.
Функція вищого порядку (higher order function) - функція, яка приймає у якості параметрів інші функції або повертає функцію у якості результату.
Розглянемо далі приклад використання колбек функцій:
У нас є дві функції greeting і goodbye, які приймають рядок і виводять повідомлення вітання і прощання.
Також у нас є функція myFunc, яка в якості аргумента приймає колбек функцію і рядок.
Тепер, щоб вивести те чи інше повідомлення достатньо викликати нашу функцію myFunc і передати в неї назву функції повідомлення (посилання на функцію) і імʼя у якості рядка.
Ми передали посилання на функції greeting і goodbye як аргумент, тому вона буде присвоєна в параметр callback і викликана всередині функції myFunc за допомогою круглих дужок. Ім'я параметра для колбека може бути довільним, головне пам'ятати, що значенням буде функція.
Інлайн колбеки - це колбек-функції, які оголошуються безпосередньо в місці свого використання, без попереднього оголошення окремих функцій.
Це дозволяє визначити та використовувати колбек-функції прямо там, де вони потрібні, що може спростити код та зробити його більш читабельним, особливо у випадках, коли функція використовується лише в одному місці.
У JavaScript можна передавати декілька колбек-функцій у функцію або метод як аргументи. Це може бути корисним, коли вам потрібно виконати різні операції у різних контекстах або обробити різні події одночасно.
Далі наведемо приклад перевірки доступу користувача до якогось сервісу. Імітувати дозволеність будемо за допомогою автогенератора випадкових чисел random. При виклику функції передаватимемо імʼя, а також дві колбек-функції, які оброблятимуть ситуацію в разі дозволу і відмови доступу.
Різні виклики функції будуть давати різні результати.
Такий підхід дозволяє оброблювати результати перевірки в окремих функціях, а не описувати все всередині однієї функції. Колбеки використовують для обробки дій користувача на сторінці, на момент обробки запитів на сервер, виконання заздалегідь невідомих функцій тощо. У цьому і полягає їх суть - це функції, призначені для відкладеного виконання.
Абстракція - це приховування деталей реалізації. Функції - це чудовий спосіб побудови абстракцій, коли весь процес прихований, а ми отримуємо результат виконання операції.
Так само можна створити абстрактне повторення. Написати функцію, яка приймає колбек і виконує її вказану кількість разів.
Якби не абстаргування повторення, нам би доведося шість разів викликати функцію.