|
|
|
Синхронный AJAX в Crome
|
|||
|---|---|---|---|
|
#18+
Уважаемые спецы по JS. Помогите решить проблему. Делал кусок веб-приложения, сугубо бэкендного характера (импорт огромных XML-файлов, около 1Гб). Чтобы сервак не отправлялся в аут по максимальной времени работы скрипта и памяти, сам процесс разбил на куски и вызываю каждый кусок из браузера при помощи AJAX и в ответ отображаю процесс (прогрессбар) довольному пользователю. Что сделал. перевел $.ajax в синхронный режим async=false и пожалуйста! Работает как часики. Все мои этапы работы аккуратно один за одним запускаются. Всё настроил и отладил, работает как рояль в Большом театре, но начали тестить манагеры и тут выяснилось, что браузеру Google Crome (на котором сидит 90% манагеров) async=false до одного места. Он все равно выполняет все $.ajax, $.get, $.post АСИНХРОННО (выкинув в консоль сообщение про "ай-я-яй, так нельзя... depricated ... и т.д."). И в итоге все мои наработки летят тоже в одно место. Причем я и раньше знал об этой особенности Хрома, но т.к. сам Лисовод ярый - что то спустил это на тормозах. Так вот, когда просто идет серия AJAX запросов подряд, то проблем нет делаю примерно так Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Тут какбе всё просто (это я просто уже в процессе переписал на deffered objects, хотя конечно можно было и просто слушать события onSuccess и т.д. не суть...) тут всё нормально работает одно за другим - статика есть статика. Но пара ajax-запросов у меня вызываются динамически в зависимости от условий (циклом или рекурсией) вот тут беда... Вот рекурсивная функция: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Вот с ней (и таких несколько) беда... в консоль попадает следующее 1. console.log('Нарезаем SQL-пакеты'); 2. console.log('Нарезано'); 3. и начинает результаты запроса выводить console.log(msg); Т.е. я никак не могу гарантировано сказать что эта функция отработала полностью и можно переходить к следующему этапу. ЧТО БЛИН ТУТ МОЖНО СДЕЛАТЬ? Как заставить аджакс в хроме работать синхронно? Как без всяких дебильных конструкций (типа while с выходом по постусловию) запустить следующий этап работы, после гарантированного окончания текущего? Помогите! Вопрос уже из области "как блин?", дело чести. Убедительная просьба: 1) Если знаете какие нибудь плагины или расширения jquery которые умеют синхронные запросы в Crome - приму с дорогой душой, сам ничего не нашел. 2) Личный опыт и лайфхаки - интересны. 3) Если решается при помощи defered objects - напишите плиз примерчик, ибо уже 3-й день копаю в эту сторону. 4) Всякие недоучки, которым по теме сказать нечего кроме, того как объяснить мне что "так вообще нельзя" , "импортировать вообще ничего не надо", "делай через Кронт", "пусть маленькие файлы присылают", "это не твоя работа вообще" - идите ЛЕСОМ! И надеюсь на поддержку модераторов в этом. Вопрос задан конкретно специалистом по JS и людям которым интересна сама задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2015, 18:36 |
|
||
|
Синхронный AJAX в Crome
|
|||
|---|---|---|---|
|
#18+
stardgВсякие недоучки, которым по теме сказать ты так всех распугал))). stardgимпорт огромных XML-файлов, около 1Гб выбирай средства под задачу. Зачем нагибать асинхронный веб? Почему не взять веб-сокет с постоянным соединением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 11:42 |
|
||
|
Синхронный AJAX в Crome
|
|||
|---|---|---|---|
|
#18+
Petro123stardgВсякие недоучки, которым по теме сказать ты так всех распугал))). Видать не всех... P.S. Стандартная форумная ситуация, спрашиваешь как колесо заменить, а в ответ "надо было Хонду брать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 11:58 |
|
||
|
Синхронный AJAX в Crome
|
|||
|---|---|---|---|
|
#18+
stardg, форум есть форум. Игнор страшнее чем флуд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 12:00 |
|
||
|
Синхронный AJAX в Crome
|
|||
|---|---|---|---|
|
#18+
stardg, докачку\обрыв связи реализуешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 12:01 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39108137&tid=1445622]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
140ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 468ms |

| 0 / 0 |
