У меня есть массив наблюдаемых (запросы HTTP POST), которые мне нужно отправить в API после определенного события. Ниже приведен упрощенный пример подхода, в котором я использую concat
, чтобы использовать успешные, ошибочные и полные обратные вызовы.
// build up an array of stored POST requests to fire off later
// array is indeterminate length, could be 1 request could be 1,000
let requests = [ req1, req2, req3, req4 ];
concat(...requests).subscribe(
success => ... handle success ...
error => ... handle error ...
() => ... handle completion ...
);
Проблема в том, что concat в основном отправляет все запросы одновременно, что повышает вероятность проблем параллелизма в API, потребляющем запросы. Эта проблема должна быть решена, если я смогу запускать запросы один за другим, а не все сразу. Я определил, что цикл forEach
не подходит.
Существует ли подход RxJS, при котором req2
генерируется только после завершения req1
, а req3
— только после завершения req2
и так далее? Я просматривал документы RxJS, но пока не нашел ничего, что соответствовало бы этому сценарию.
concat
должен запускать наблюдаемые последовательно, переходя к последующим запросам только после завершения первого. Пример - person BizzyBob   schedule 10.10.2020concat
должен работать по назначению. Если это не так, предоставьте stackblitz, который воспроизводит проблему. - person frido   schedule 12.10.2020