在后续的 concatMap 处理程序中使用先前的响应

Use previous response in subsequent concatMap handlers

我有可变数量的 url 请求,每个请求的响应中的属性部分用作下一个请求的输入 - 我有一个对象配置,其中包含要提取的 url 和属性

concatMap 运算符作为流的一部分运行良好,例如from(urls).pipe(concatMap(...)) 按顺序调用

我想知道有没有办法使用 concatMap 中每个 xhrrxjs/ajax 调用的响应作为下一次调用的输入?

我可以根据需要通过外部 ReplaySubject 到 store/retrieve 响应来解决这个问题,但认为可能有一个 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();

你可以用同样的方式修改请求,而不仅仅是使用管道中以前的数据。