Использовать предыдущий ответ в последующих обработчиках concatMap

У меня есть переменное количество URL-адресов для запроса, и свойства из ответа на каждый запрос частично используются в качестве входных данных для следующего - у меня есть конфигурация объектов с URL-адресами и свойствами для извлечения.

Оператор concatMap хорошо работает как часть потока, например. from(urls).pipe(concatMap(...)) для совершения звонков по порядку

Мне интересно, есть ли способ использовать ответ каждого xhr или rxjs/ajax вызова, сделанного в concatMap, в качестве ввода для следующего вызова?

Я могу обойти это с помощью внешнего ReplaySubject для хранения/получения ответов по мере необходимости, но подумал, что для этого может быть подход оператора rxjs

Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
Promise v/s Observable в Angular
Promise v/s Observable в Angular
В системах Push производитель определяет, когда отправить данные потребителю. Потребитель не знает, когда он получит эти данные.
Подсказка RxJS [filter, skipWhile]
Подсказка RxJS [filter, skipWhile]
Эта подсказка описывает разницу между операторами filter и skipWhile из библиотеки RxJS .
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
1
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, это интересный случай. Кстати, есть решение, не только с RxJS, но вы можете его использовать:

const requests = [url1, url2, url3];

const combineRequests = requests.reduce((prev, curr) => {
  return prev.pipe(switchMap(prevData => curr.pipe(map(res => { ... you have previous data here in the pipe }))))
}, of(null));

combineRequests.subscribe();

Вы можете изменить запрос таким же образом, а не только использовать предыдущие данные в каналах.

Мне пришлось читать и перечитывать это несколько раз ? Никогда раньше не видел наблюдаемые, построенные таким образом:of().pipe().pipe()..

Drenai 17.03.2022 13:22

Это неплохо, и вы получаете взаимодействие с несколькими запросами.

Anton Marinenko 17.03.2022 14:51

Другие вопросы по теме