Синхронные функции без обратных вызовов

Предположим, у меня есть эти две функции:

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() после того, как вы обнаружили, что это прибыло
  • заменить эту третью сторону на лучшую
Другие вопросы по тегам