Я полагаю, что это не имеет ничего общего с обещаниями.
Всякий раз, когда вы пишете такой код -
function mainFn(callback) {
// do async stuff
// call callback when done
callback();
}
// callback handler
function callbackFn() {
console.log('callback fn');
}
Вы должны убедиться, что передаете ссылку функции обратного вызова напараметр обратного вызова mainFn()
, например, -
// Passess reference to callback function inside mainFn
mainFn(callbackFn);
Однако делать что-то вроде -
// Executes the callback function and passes it's result into mainFn
mainFn(callbackFn());
совершенно неправильно.Это похоже на то, что вы делаете с .then(printstring("C"))
.Сначала он выполнит printstring("C")
.
Итак, чтобы справиться с этим, оберните его в анонимную функцию, например, так -
function printall() {
printstring("A")
.then(function() { printstring("C"); })
}