Помогите разобраться с callback функциями

Только вникаю в js и дошел до callback функций. Везде приводится такой пример.

function first(callback) {
    setTimeout(function() { console.log("1"); }, 1000);
    callback();
}

function second() {
    console.log('2');
}



first(function () {
    second()
});

Но я не понимаю зачем передавать функцию second в качестве аргумента callback функции first если функцию second я могу и так вызвать без использования параметра.

function first() {
    setTimeout(function() { console.log("1"); }, 1000);
    second();
}

function second() {
    console.log('2');
}




first();

Ответы (1 шт):

Автор решения: Vasily

Коллбеки это вариант привязаться к определенной точке выполнения. Предположим Вы хотите что бы childFunc() начала выполняться только после того как функция parentFunc() будет завершена:

function parentFunc(callback) {
    // ... какой-либо синхронный код
    callback()
}

function childFunc() {
    console.log("Следующая фунция")
}

parentFunc(childFunc)

Или для асинхронного кода это возможность начать выполнения следующей функции только после того как асинхронная операция будет завершена:

function parentFunc() {
    setTimeout(childFunc, 1000)
}

function childFunc() {
    console.log("Следующая фунция")
}

В JavaScript на системе коллбеков основано многое, например промисы это не что иное как те же самые коллбеки, только в более удобном виде.

→ Ссылка