JustHum6n
@JustHum6n

Что такое callback?

Везде читаю, как работает коллбек. Там же нахожу примеры. Пишу свои примеры и ничего не работает.
function dohomework(subject, f){
  setTimeout(function(){alert("doing " + subject + " homework")}, 2000);
  f();
}
dohomework("math", greet);

function greet(){
  alert("finished homework");
}

Как утверждает источник, если я передал функцию параметром другой функции это будет коллбеком и в данном примере, она вызовется после того, как выполнится сет тайм аут... Но ничего не работает
  • Вопрос задан
  • 605 просмотров
Пригласить эксперта
Ответы на вопрос 4
@bogomazov_vadim
Насколько я понял, должно быть так.

Ответ написан
bootd
@bootd
Гугли и ты откроешь врата знаний!
https://jsfiddle.net/nzbgr9fd/
Ну так setTimeout - это отложенная функция, ассинхронная. Вызывайте колбек внутри таймер, а не следом за ним.
Ответ написан
@h88p
Pre-Junior HTML Developer
Вам следует посмотреть
Там есть похожий пример, но без колбека, и объясняется, почему в вашем случае сначала появляется алерт из колбека, а потом из таймаута

Спойлер
Таймаут запущен => программа работает дальше и натыкается на коллбек => он выполняется => и через заданное время срабатывает алерт из таймаута
Ответ написан
Xuxicheta
@Xuxicheta
инженер
function callMe(name, callback) {
  console.log('callMe');
  callback(name);
}

function myCallback(myName) {
  console.log('myCallback');
  console.log(myName);
}

callMe('vasya', myCallback);


В данном случае функция myCallback передается как аргумент в функцию callMe
Функция callMe в какой-то момент своей работы берет свой аргумент callback и вызывает его, передавая ему какие хочет аргументы. Это называется обратным вызовом, а callback тут у нас будет функцией обратного вызова, т.е. коллбэком.

В js очень часто функции принимают на вход другие функции, чтобы вызвать их в каких-то условиях, например setTimeout или функции работы с массивами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы