Мой вопрос довольно прост, но мне трудно понять, как его решить. Как показано в приведенном ниже коде, я загружаю 3 CSV-файла, а затем обрабатываю их с помощью queue.js. Пока это происходит, я хочу, чтобы пользователю показывался какой-то индикатор прогресса.
queue()
.defer(d3.csv,"data/1.csv")
.defer(d3.csv,"data/2.csv")
.defer(d3.csv,"data/3.csv")
.awaitAll(preprocessing);
Мне удалось заставить индикатор выполнения отображаться, когда документ готов с использованием JQuery. Однако индикатор выполнения приостанавливается для выполнения приведенного выше кода, что лишает смысла весь смысл. Проблема не в наличии индикатора прогресса или в загрузке и обработке данных с использованием очереди самостоятельно; скорее, проблема заключается в их интеграции. Я действительно застрял с тем, куда идти отсюда.
Любая помощь горячо приветствуется. Мне не нужно использовать queue.js, поэтому приветствуются предложения по альтернативным способам загрузки и обработки, если они упрощают решение. Спасибо!
<div id="loading"><img src="someLoadingURL.gif" /></div>
Затем вы можете скрыть его с помощью CSS#loading { display: none; }
Затем активируйте jQuery до того, как очередь начнет отображать загрузочный gif$("#loading").show();
Если это уже то, что вы уже сделали, вы можете попробовать загрузка ваших CSV-файлов с использованием прямого запроса $.ajax, для которого параметр async равен true. В обратном вызове .success вы можете установить глобальный флаг, который вы можете проверить, чтобы сообщить вам, все ли файлы были загружены, и вызвать вашу функцию обработки, как только они это сделают. - person Dropzilla   schedule 07.05.2013