Синхронные функции без обратных вызовов
Предположим, у меня есть эти две функции:
function complex() {
setTimeout(function() {
console.log('complex setTimeout');
}, 1000); // assume this value is random
function subFun() {
console.log('complex subFun');
setTimeout(function() {
console.log('complex subFunction setTimeout');
}, 2000); // assume this value is random
}
subFun();
}
function simple() {
console.log('simple');
}
Предположим, что я их не писал - они сторонние. Теперь я хочу позвонить им синхронно и получить:
complex subFun
complex setTimeout
complex subFunction setTimeout
simple
Проблема в том, что я не могу использовать обратные вызовы (сторонние функции). Я также не могу использовать обещания или события (по той же причине). Я не могу использовать async
а также step
модули, из-за функций арности. Как, черт возьми, я могу позвонить simple()
после complex()
(и все вложенные подфункции) синхронно? И делает ли JavaScript sux?:)
1 ответ
Как, черт возьми, я могу вызвать simple() после [асинхронных вещей] синхронно?
Ты не можешь Это определение асинхронного против синхронного.
Если у вас есть этот асинхронный скрипт без обратной связи, у вас есть только два варианта:
- опросить результат скрипта через
setInterval
или аналогичный, и выполнитьsimple()
после того, как вы обнаружили, что это прибыло - заменить эту третью сторону на лучшую