Не совсем понимаю как работают колбэки в JavaScript
Экспериментировал с колбэками, обнаружил следующее в своем коде:
function doSomething(subject, callback) {
setTimeout(() => {console.log(`Hi, ${subject}`);}, 3000);
callback();
}
doSomething('John', function() {
console.log('Finish');
});
Я поставил setTimeout, предположив, что сначала отработаются эти 3 секунды, а потом только выполнится функция calback(). Однако у меня Finish отобразился раньше чем Hi, John. Почему так произошло?
Ответы (2 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Почему так произошло?
Потому что setTimeout асинхронная функция. К колбэкам это не имеет никакого отношения.
Если банально написать вместо таймаута строку console.log(1+2), то вначале она выполнится, а потом колбэк
Автор решения: Anastasiia O.
→ Ссылка
Потому что отложенный коллбак сработает только в случае помещения его в функцию-аргумент setTimeout.
function doSomething(subject, callback) {
setTimeout(() => {
console.log(`Hi, ${subject}`);
callback();
}, 3000);
}
doSomething("John", function () {
console.log("Finish");
});
