Да, не доглядел что там for(), а мне уже везде while() мерещится.
Я впринципе понял, что интерпретатор javascript однопоточный, а реакция на отложенные события сделана через событийную модель. Поэтому блокировать поток ожиданием нельзя, так как обработчики событий обрабатываются между циклами main loop.
В свете этого мне посоветовали пользоваться коллбаками. И инит разбивать на цепочку функций:
this.init = function(id)
{
// Загрузка с сервера информации
this.load(id, this.init_second_callback() );
}
this.init_second_callback = function()
{
// Тут еще какие-то действия, еще какая-то подгрузка информации
this.loadFormula(id, this.init_third_callback() );
}
this.init_third_callback = function()
{
// Тут инит наконец-то завершен
...
}
Но проблема в том, что инит этого объекта не единственный. Существует ведь и вышестоящий код, который вызывает инит этого объекта. И он тоже должен дождаться пока инит этого объекта пройдет. И только когда инит этого объекта завершен, вызвать инит следующих объектов.
Получается, что в вышестоящем коде тоже надо делать цепочку вызовов с коллбаками.
А если есть еще выстоящий код (у меня четыре слоя) то и у них у всех тоже придется переделывать на цепочку функций с коллбаковыми вызовами? Я же с ума сойду.