Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Если ожидание больше 2 секунд (https://javascript.ru/forum/misc/70925-esli-ozhidanie-bolshe-2-sekund.html)

Andreysolomon 12.10.2017 11:17

Если ожидание больше 2 секунд
 
Отправляю данные с помощью $.get, но как определить если ответа нет больше 2 секунд, то показывать лоадер, но если придет быстро (допустим за секунду) не показывать лоадер

Alexandroppolus 12.10.2017 11:22

var timer = setTimeout(function() {
  // тут показываем лоадер
}, 2000);

$.get(url, function(data) {
  clearTimeout(timer);
  ...
});


лоадер всплывет через 2 сек.

laimas 12.10.2017 12:00

Цитата:

Сообщение от Andreysolomon
как определить если ответа нет больше 2 секунд

Зачем? Показывайте его сразу при инициализации запроса и скрывайте по ответу сервера и ошибках.

Andreysolomon 12.10.2017 13:58

laimas, запрос-ответ обычно занимает около секунды, а теперь представьте, у вас быстрый инет (100мб/с) и вы бродите по сайту. Нажав на какую нибудь кнопку, у вас перед глазами на СЕКУНДУ (!) ПОЯВЛЯЕТСЯ лоадер и тут же скрывается + учитываем то что вы будете открывать много страниц сайта. Ну некрасиво ведь....

laimas 12.10.2017 14:04

Цитата:

Сообщение от Andreysolomon
запрос-ответ обычно занимает около секунды, а теперь представьте, у вас быстрый инет (100мб/с)

Представил, но только скорость от провайдера еще не означает, что север будет отвечать мгновенно, и причин этому может быть много. И кто вам дал гарантию что если через две секунды ответа не будет, то еще придется ждать две? Отработает ваш таймер, покажет крутилку, а через пол секунды сервер ответит. Это красиво, а вот показалось сразу на секунду, это не красиво?

Andreysolomon 12.10.2017 14:29

laimas, да согласен, но я не хочу показывать крутилку людям с быстрым интернетом, вот и приходится выкручиваться, жаль что в js нет функции, которая рассказала бы о скорости интернета у пользователя.

laimas 12.10.2017 14:43

Цитата:

Сообщение от Andreysolomon
жаль что в js нет функции, которая рассказала бы о скорости интернета у пользователя

Скорость еще не означает быстрый ответ сервера. Будет сервер занят и чем вам поможет скорость? А если на маршруте какой либо узел глючит? Как-то у вас все просто - если 100 МБс значит все должно летать. Хотелось бы, но увы, у меня скорость большая, но дожидаться ответов этого форума бывает приходится так долго, что успевает борода вырасти.

Andreysolomon 12.10.2017 15:28

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

Alexandroppolus 12.10.2017 15:35

Andreysolomon,

Показывай не слишком заметный лоадер где-то с краю или в углу. Чтобы и загрузку можно было увидеть, и не моргало бы сильно, если быстро загрузится.

Andreysolomon 12.10.2017 15:40

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


Часовой пояс GMT +3, время: 00:13.