Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2015, 22:41
Интересующийся
Отправить личное сообщение для TomTykver Посмотреть профиль Найти все сообщения от TomTykver
 
Регистрация: 01.03.2015
Сообщений: 25

progress bar на чтение из БД
Подскажите пожалуйста. На стороне js с помощью ajax получаю массив данных из php. На стороне сервера в php запросом получаю данные из mySQL. Пытаюсь организовать progress bar. Однако progress bar отображает процесс передачи массива данных php - js (около 0.3 сек), а процесс чтения из БД не попадает в progress bar, а по времени это 10 сек.
Подскажите, как отобразить общий процесс (с момента обращения к серверу до момента получения на клиенте массива) ?
function geting(DayOfWeek, NameMons, EpZoom) {
			var progressBar = $('#progressbar');
                $.ajax({
                    url: 'data.php',
                    type: 'POST',
                    dataType: 'json',
                    data: {
                        jsonData: {DayOfWeek: DayOfWeek, NameMons: NameMons, EpZoom: EpZoom}
                    },
					xhr: function() {
    var xhr = $.ajaxSettings.xhr();
    xhr.upload.addEventListener('progress', function(evt){
        if (evt.lengthComputable) {
            var percentComplete = Math.ceil(evt.loaded / evt.total * 100);
			console.log(evt.loaded);
			console.log(evt.total);
            progressBar.val(percentComplete);
        }
      }, false);
    return xhr;
     },
                   success: function (res) {
                        Hending_flow(res);
                    }
                });
            }
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2015, 06:49
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Процесс чтения из бд находится в фазе ожидания ответа сервера. В этой фазе я запускаю прогресс без value и подписываю "Данные загружены, идет обработка...". Прогресс в это время бегает как таракан - туда-сюда.

Еще что вы можете сделать, это повесить на фазы readystatechange какой-то сервис.
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2015, 06:51
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

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

Ну то есть надо понимать что прогресс может показать только судьбу данных, а когда данных нет - он ничего не может показать и приходится извращаться.

Кстати, если будет не компутабле у вас что предусмотрено? Ничего. А надо именно того таракана и предусмотреть. Кстати оно в точности так и в самом браузере устроено, в смысле в панельке даунлоад.

Смысл простой - юзер смотрит, что-то шевелится, ога, значит процесс идет, больше ему ниче не надо. Ну собственно тогда зачем вам прогресс - крутите ему часики или крутилку.

Последний раз редактировалось kostyanet, 18.05.2015 в 06:56.
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2015, 09:30
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от TomTykver
процесс чтения из БД не попадает в progress bar, а по времени это 10 сек
Это за запрос, что так долго обрабатывается?
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2015, 09:42
Интересующийся
Отправить личное сообщение для TomTykver Посмотреть профиль Найти все сообщения от TomTykver
 
Регистрация: 01.03.2015
Сообщений: 25

выборка большая: 80 тыс. записей. Из БД беру инфу для построения маршрутов в yandex map. Беру инфу из БД, перегоняю в массив, обрабатываю и подаю в js
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2015, 10:19
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

И что прямо сразу все 80000 отображаются на карте? И что пользователи ваши терпят и ждут 10 сек только ответа сервера, не считая построения маршрутов?
80000 вообще-то не такая и критичная цифра и может сперва подумать или об оптимизации запросов, или организации данных для сокращения времени на запрос?
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2015, 20:45
Интересующийся
Отправить личное сообщение для TomTykver Посмотреть профиль Найти все сообщения от TomTykver
 
Регистрация: 01.03.2015
Сообщений: 25

Отображаются все сразу или нет - это от выбранного масштаба зависит. Если быть точнее, то это не маршруты - это участки дорог. И строятся они меньше секунды. В общем думаю надо, наверное, стартовать страницу с приемлемым масштабом и подавать инфу на карту порционно, начиная с видимой части карты при "оптимальном" масштабе.
Ответить с цитированием
  #8 (permalink)  
Старый 18.05.2015, 20:47
Интересующийся
Отправить личное сообщение для TomTykver Посмотреть профиль Найти все сообщения от TomTykver
 
Регистрация: 01.03.2015
Сообщений: 25

Большое спасибо за участие
Ответить с цитированием
  #9 (permalink)  
Старый 19.05.2015, 05:40
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Ну да, тогда сама карта и станет прогресс-баром. Гугле-карты как я помню загружаются кусками, а вектор - слоями.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
progress bar идеи по оптимизации caetus Общие вопросы Javascript 5 29.01.2015 02:52
input и progress bar MrTemax Элементы интерфейса 1 14.11.2014 22:07
Progress bar двигаем мышкой. pifon Общие вопросы Javascript 1 27.08.2014 15:51
Progress bar dima_zluka Элементы интерфейса 0 20.03.2011 02:05
progress bar для JS Dagger Общие вопросы Javascript 18 14.05.2009 14:02