Я использую Google Appengine для запуска веб-приложения, и у меня возникла небольшая проблема. Мне нужно сгенерировать довольно большой файл CSV и отправить его клиенту. Поскольку максимальный тайм-аут составляет 60 секунд и нет файловой системы для записи, я решил использовать SJAX (я полагаю, синхронный AJAX), чтобы получать данные с сервера порциями, объединять их, а затем отправлять обратно на сервер, где сервер отправляет его обратно клиенту в виде файла CSV. Очень надоедливый.
В любом случае, это занимает очень много времени, поэтому я подумал, что буду использовать индикатор выполнения, который проверяет, сколько чанков было получено, против общего количества. Проблема в том, что, поскольку я использую SJAX, отдельный поток js блокируется. setTimeout()
также блокируется. Кто-нибудь знает какой-либо способ обойти это (часть с графическим интерфейсом, я пытаюсь найти лучший способ обработать файл отдельно)?
РЕДАКТИРОВАТЬ: Хотя я ценю, что Шей указал мне правильное направление для решения моей проблемы, мне все еще интересно, есть ли способ угадать эмуляцию многопоточности во время вызова SJAX.