которые будут дожидаться ответа от сервера и только после этого отправлять новый,?
Стоит задача отправить на бэк более 10к обьектов, но за раз можно только 250, и теперь хочу кусками отправлять.
може тут не rxJs надо, а просто рекурсия? Если запрос выполнился, то там еще раз вызывать тот же метод... хотя даже не рекурсия, а просто продолжать выполнять, пока массив есть
Спасибо за ответ, решил именно через Rxjs так как там очень грамотно реализована работа с потоками, не нужно париться на счет рекурсии и мемори лик. Решил простыми операторами from, bufferCount,concatMap первый держит в себе всю инфу второй принимает в себя размер или лимит отправляемых данных(250 в моем случае) третий уже выполняет отправку, дожидается ответа и снова отправляет новые данные если еще есть.
а когда упадет один из запросов, то скореей всего ведь цепочка вся отсновится? Давно делал подобную таску, то там пришлось дополнительно это обрабатывать, чтобы остальные запросы продолжали лететь
Возможно придется добавить catchError, честно говоря точно не знаю упадет ли весь цикл при первой ошибке, нужно будет затестить как нибудь.
по-моему, я применил был concat вместо concatMap, чтобы избежать этой проблемы. У меня там дело было с пачкой платежей через страйп. И вот если какой-то платеж не прошел, то остальные не должны были прерваться... Что-такое. Ну это было больше года назад...
Спасибо за совет, завтра попробую протестить.
catchError, чтобы ошибка не полетела во внешний поток, можно ретрайнуть ещё сначала
Я правильно понял мой конкатмап это внутренний поток, и при добавке catchError я не допускаю прерывания внутреннего потока?
Я не прям эксперт, но если не пустить ошибку выше с помощью catchError, то будет вызван по идее следующий concatMap
Окей, если что отпишусь завтра.
Эксперт не эксперт но в теории звучит очень логично😅
Ну внешний поток не должен упасть в таком случае, ошибку об работаете и замените на что-то, хоть даже EMPTY (просто сразу завершит внутренний поток с запросом в конкатмапе)
если добавить кэтч после concatMap то поток не упадет, но завершится. кэтч нужно добавлять внутри concatMap, чтобы перехватить ошибку одного запроса и вместо него вернуть чтото
Внутри конкатмапа это .pipe() к нему прикрутить?
Обсуждают сегодня