@TyllerDurden

Как выполнять код последовательно?

Здравствуйте. Пишу подгрузку постов при скролле до последнего. Код выглядит следующим образом, все лишнее убрал:

let articles = document.querySelectorAll('.main-content .article');
let articleLast = articles[articles.length - 1]; //получаем последний пост

if(pageYOffset >= articleLast.getBoundingClientRect().height){ //и когда скроллим до него..
 //содержимое успевает выполниться несколько раз, а нужно, чтобы только один
});


Когда доскролливаю до последнего загруженного поста, то происходит подгрузка других постов. Но проблема в том, что вместо одного запроса к бд происходит несколько. Т.к. пока новый последний пост не подгружен, и скролл продолжается, то условие выполняется, а потому он подгружает снова и снова, пока не выполнится первый запрос. Что здесь можно предпринять?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
if (requestInProgress) {
  return;
}
requestInProgress = true;
const data = await fetch(...);
// отображаем данные
requestInProgress = false;
Ответ написан
@Mellorn
Хранить где-нибудь состояние того, выполняется ли в данный момент подгрузка. И если да, то ничего просто не делаем.
Чисто пример, понятное дело, подгоните под свой случай.
if (loading) {
    return;
}

loading = true;
// Тут подгружаем данные, добавляем в DOM и т.д.
loading = false;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы