169 похожих чатов

Всем привет, не подскажите как через rxjs сделать последовательные запросы

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

15 ответов

9 просмотров

може тут не rxJs надо, а просто рекурсия? Если запрос выполнился, то там еще раз вызывать тот же метод... хотя даже не рекурсия, а просто продолжать выполнять, пока массив есть

Alen- Автор вопроса
Oleksandr 🤖
може тут не rxJs надо, а просто рекурсия? Если зап...

Спасибо за ответ, решил именно через Rxjs так как там очень грамотно реализована работа с потоками, не нужно париться на счет рекурсии и мемори лик. Решил простыми операторами from, bufferCount,concatMap первый держит в себе всю инфу второй принимает в себя размер или лимит отправляемых данных(250 в моем случае) третий уже выполняет отправку, дожидается ответа и снова отправляет новые данные если еще есть.

а когда упадет один из запросов, то скореей всего ведь цепочка вся отсновится? Давно делал подобную таску, то там пришлось дополнительно это обрабатывать, чтобы остальные запросы продолжали лететь

Alen- Автор вопроса
Oleksandr 🤖
а когда упадет один из запросов, то скореей всего ...

Возможно придется добавить catchError, честно говоря точно не знаю упадет ли весь цикл при первой ошибке, нужно будет затестить как нибудь.

Alen
Возможно придется добавить catchError, честно гово...

по-моему, я применил был concat вместо concatMap, чтобы избежать этой проблемы. У меня там дело было с пачкой платежей через страйп. И вот если какой-то платеж не прошел, то остальные не должны были прерваться... Что-такое. Ну это было больше года назад...

Alen- Автор вопроса
Oleksandr 🤖
по-моему, я применил был concat вместо concatMap, ...

Спасибо за совет, завтра попробую протестить.

Oleksandr 🤖
по-моему, я применил был concat вместо concatMap, ...

catchError, чтобы ошибка не полетела во внешний поток, можно ретрайнуть ещё сначала

Alen- Автор вопроса
Leonid Симаков
catchError, чтобы ошибка не полетела во внешний по...

Я правильно понял мой конкатмап это внутренний поток, и при добавке catchError я не допускаю прерывания внутреннего потока?

Alen
Я правильно понял мой конкатмап это внутренний пот...

Я не прям эксперт, но если не пустить ошибку выше с помощью catchError, то будет вызван по идее следующий concatMap

Alen- Автор вопроса
Alen- Автор вопроса
Leonid Симаков
Я не прям эксперт, но если не пустить ошибку выше ...

Эксперт не эксперт но в теории звучит очень логично😅

Alen
Эксперт не эксперт но в теории звучит очень логичн...

Ну внешний поток не должен упасть в таком случае, ошибку об работаете и замените на что-то, хоть даже EMPTY (просто сразу завершит внутренний поток с запросом в конкатмапе)

Alen
Возможно придется добавить catchError, честно гово...

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

Alen- Автор вопроса
xxtux Shvets
если добавить кэтч после concatMap то поток не упа...

Внутри конкатмапа это .pipe() к нему прикрутить?

Похожие вопросы

Обсуждают сегодня

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
@FAssembler ты много с формами работал, как цикл обработки сообщений от окошек надо делать, чтобы IsDialogMessage не ломал ввод в эдиты и навигация по табам работала?
The Bird of Hermes
8
Карта сайта