У меня есть переменное количество URL-адресов для запроса, и свойства из ответа на каждый запрос частично используются в качестве входных данных для следующего - у меня есть конфигурация объектов с URL-адресами и свойствами для извлечения.
Оператор concatMap
хорошо работает как часть потока, например. from(urls).pipe(concatMap(...))
для совершения звонков по порядку
Мне интересно, есть ли способ использовать ответ каждого xhr
или rxjs/ajax
вызова, сделанного в concatMap
, в качестве ввода для следующего вызова?
Я могу обойти это с помощью внешнего ReplaySubject
для хранения/получения ответов по мере необходимости, но подумал, что для этого может быть подход оператора rxjs
Я думаю, это интересный случай. Кстати, есть решение, не только с 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()..