在后续的 concatMap 处理程序中使用先前的响应
Use previous response in subsequent concatMap handlers
我有可变数量的 url 请求,每个请求的响应中的属性部分用作下一个请求的输入 - 我有一个对象配置,其中包含要提取的 url 和属性
concatMap
运算符作为流的一部分运行良好,例如from(urls).pipe(concatMap(...))
按顺序调用
我想知道有没有办法使用 concatMap
中每个 xhr
或 rxjs/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();
你可以用同样的方式修改请求,而不仅仅是使用管道中以前的数据。
我有可变数量的 url 请求,每个请求的响应中的属性部分用作下一个请求的输入 - 我有一个对象配置,其中包含要提取的 url 和属性
concatMap
运算符作为流的一部分运行良好,例如from(urls).pipe(concatMap(...))
按顺序调用
我想知道有没有办法使用 concatMap
中每个 xhr
或 rxjs/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();
你可以用同样的方式修改请求,而不仅仅是使用管道中以前的数据。