Создадим несколько функций:
Код
function first() {
// здесь выполняются какие-то действия, ниже имитируем какую-то задержку в 500мс
setTimeout(function() {
console.log(1);
}, 500)
}
// далее функция без всяких задержек
function second() {
console.log(2);
}
first();
second();
Первой отработает функция
second(), несмотря на то, что она в коде по порядку идёт второй.
Но не зная, сколько будет составлять задержка, например, на получение каких-то данных от сервера, мы не может предсказать результат, особенно если обе функции работают с одними и теми же данными.
И если функции в коде идут одна за другой, совсем не обязательно, что они выполняются также, они будут запускаться одна за другой, но могут вернуть результат в разное время.
Каллбэк-функция - это функция, которая должна быть выполнена, когда другая функция завершила своё выполнение.
Практический пример, где в параметры функции в качестве аргумента мы передаём другую функцию:
Код
function learnJS(lang, callback) {
console.log(`Я учу: ${lang}`); // сначала выполниться это
callback(); // потом запустится эта функция
}
learnJS('JavaScript', function() {
console.log('Я прошёл этот урок');
});
Цитата
Я учу: JavaScript
Я прошёл этот урок
Это был пример с анонимной функцией, но по аналогии можно выполнить и с именованной:
Код
function learnJS(lang, callback) {
console.log(`Я учу: ${lang}`); // сначала выполниться это
callback(); // потом запустится эта функция
}
function done() {
console.log("Я прошёл этот урок");
}
learnJS("JavaScript", done);
Всего комментариев: 0