чтобы если уже по одному блоку запрос был выполнен, он не выполнялся повторно?
Ну сохранить где-то ответ
Вопрос неверно задал, скорее всего. Мне надо, чтобы при скроле, если уже по блоку был запрос, он не повторялся повторно
самый топорный вариант хранить промис в мапе аля const chachedPromises = { [‘некий уникальный ключ для блока’]: promise } но твой вопрос слишком общий - тут могут быть нюансы под твой конкретный кейс
А кто отправляет твой запрос?
Ты имеешь в виду пока запрос не завершился?
вариант так себе, их может быть больше сотни
при скролле, если блок виден, запрос отправляется
можешь хранить не промис а флаг что для этого блока уже данные были запрошены
А нет апихи у обсервера какого-нибудь, чтобы обсервер увидел элемент выполнил действие и больше не подписывался на изменения?
должны быть способ отписки от обсервера
способ отписки есть, но если ты проскролишь дальше и вернешься к этому блоку, он снова подпишется
каким образом он снова подпишется?)) если ты ему не скажешь то не подпишется
если блок снова окажется в поле видимости
Понятно, ладно У тебя может быть только один запрос в одну сторону в конкретный момент времени. Просто бул флаг заведи вида isFetchingMore
условно часть страницы
каким образом ты узнаешь что он в области видимости? наверное через тот же обзервер? Вот и отпишишь от него
Если он тру, то не отправляй новый запрос, когда блок появляется во вьюпорте
Обсуждают сегодня