Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.06.2022, 11:30
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 84

Ajax, setTimeout и время ответа сервера
Всем привет, озадачился вот каким вопросом, как правильно и грамотно сделать, чтобы установленный setTimeout отрабатывал корректно. Суть в следующем: есть функция loaddata() подгрузки контента по клику на кнопку, там обычный Jquery Ajax, который понятное дело асинхронный. async false использовать не хотелось бы, и вызов этой функции
loadMoreBtn.on('click', function() {
    loadMoreBtn.html(btn_content_load)// меняем содержимое кнопки на спиннер
    setTimeout(() => {
        loaddata();
        loadMoreBtn.html(btn_content_default)// возвращаем дефолтное содержимое кнопки
    }, 400)
});

loaddata(); запрашивает с бека данные, в кнопке крутится колесико загрузки, по истечении таймаута отображается контент и кнопка принимает свой обычный вид - текст "Загрузить еще"
Проблема в том, что если на бэке замедлить время ответа сервера больше, чем на таймауте
usleep(550000); например, то естественно мы сначала увидим, что колесико загрузки пропало, в кнопке появилось "Загрузить еще" и через какое то время подъехал контент. Понятно, что специально я сервер засыпать заставлять не буду, но что если по какой то причине ответ сервера будет дольше, тем в таймауте? Как грамотно все это сконнектить, чтобы пока не пришел ответ колесико крутилось, даже если таймаут уже истек, и, если ответ пришел раньше, то все завершилось по таймауту. Надеюсь объяснил понятно.
Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 25.06.2022, 11:46
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Volonter
там обычный Jquery Ajax
что мешает выкинуть таймер и перенести все в done
Ответить с цитированием
  #3 (permalink)  
Старый 25.06.2022, 12:55
Аспирант
Отправить личное сообщение для Volonter Посмотреть профиль Найти все сообщения от Volonter
 
Регистрация: 18.01.2011
Сообщений: 84

рони,
Понял, спасибо, попробую
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка ответа от сервера Ajax gam0ra Общие вопросы Javascript 4 13.03.2015 23:16
ответ от сервера (ajax) gam0ra Общие вопросы Javascript 3 16.12.2014 15:11
Не работает CSS после получения ответа сервера Azzi AJAX и COMET 17 04.10.2011 14:36
разборка xml ответа с сервера Jekel AJAX и COMET 3 17.10.2010 01:10
Переодическое получение ответа от сервера demoniqus AJAX и COMET 6 22.06.2010 16:09