Показать сообщение отдельно
  #3 (permalink)  
Старый 03.11.2015, 14:03
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Сообщение от extrasens
Результатом работы функции foo1 будет изменение html кода страницы.
Функция foo2 работает как раз таки с этим html кодом и на основе его выполняет определенные действия и так же вносит свои коррективы в html. Функция foo3 по тому же принципу. Объединить их в одну нельзя, так как они выполняют разные задачи и такое последовательное выполнение только частный случай.
В общем такая проблема. Если их просто выполнять последовательно, то функция foo2 начнет свое выполнение до того, как будут внесены изменения в Html функцией foo1 и тд. Если ставить setTimeout то все работает, но я думаю, что это очень коряво. Так как функции могут быть очень объемными и их выполнение будет зависеть от загруженности браузера в данный момент, да и вообще от производительности системы. Т.е. это время может быть разным.
Тут явная ошибка в логике =(.
Стандарт гарантирует что JS выполняется строго последовательно т.е. функции вызываются только в том порядке в котором они вызваны и никак иначе. Функция foo2 не может быть вызвана до того как функция foo1 завершит свою работу.

Пальцем в небо но скорее всего ты ошибочно считаешь что функция foo1 вносит изменения в страницу а она на самом деле она просто делает асинхронный запрос и завершается а изменения в странице происходят когда то в будущем когда вернется ответ на запрос будет вызвана другая функция которая и будет вносить изменения в страницу.
Ответить с цитированием