Показать сообщение отдельно
  #5 (permalink)  
Старый 01.06.2013, 09:39
Аспирант
Отправить личное сообщение для xintrea Посмотреть профиль Найти все сообщения от xintrea
 
Регистрация: 02.01.2011
Сообщений: 56

Да, не доглядел что там 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() 
 {
  // Тут инит наконец-то завершен
  ...
 }


Но проблема в том, что инит этого объекта не единственный. Существует ведь и вышестоящий код, который вызывает инит этого объекта. И он тоже должен дождаться пока инит этого объекта пройдет. И только когда инит этого объекта завершен, вызвать инит следующих объектов.

Получается, что в вышестоящем коде тоже надо делать цепочку вызовов с коллбаками.

А если есть еще выстоящий код (у меня четыре слоя) то и у них у всех тоже придется переделывать на цепочку функций с коллбаковыми вызовами? Я же с ума сойду.
Ответить с цитированием