В настоящее время я пытаюсь выяснить, как вложенные обратные вызовы работают в Javascript. Но на моем примере консоль ничего не печатает. Пример довольно простой — следует печатать буквы: abc.
function getA() {
return setTimeout(() => 'a', 1000);
}
function getB() {
return setTimeout(() => 'b', 2000);
}
function getC() {
return setTimeout(() => 'c', 3000);
}
function handleWithCallback(callback1, callback2, callback3) {
callback1(a =>
callback2(b =>
callback3(c => console.info(a + b + c))
)
);
}
handleWithCallback(getA, getB, getC);


![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


В handleWithCallback вы вызываете функции callback, передавая аргументы, но обратите внимание, что ваши фактические функции обратного вызова getX не используют этот аргумент. Они должны принять функцию обратного вызова в качестве аргумента и вызвать ее.
NB: я уменьшил время ожидания, чтобы вам не пришлось долго ждать, чтобы увидеть результат :)
function getA(cb) {
return setTimeout(() => cb('a'), 100);
}
function getB(cb) {
return setTimeout(() => cb('b'), 200);
}
function getC(cb) {
return setTimeout(() => cb('c'), 300);
}
function handleWithCallback(callback1, callback2, callback3) {
callback1(a =>
callback2(b =>
callback3(c => console.info(a + b + c))
)
);
}
handleWithCallback(getA, getB, getC);
setTimeout возвращает число. Не функция - посмотрите на обещания