Rxjs 在每个API调用等待前一个API调用的情况下,如何执行和处理可观察API调用的数组?

Rxjs 在每个API调用等待前一个API调用的情况下,如何执行和处理可观察API调用的数组?,rxjs,observable,Rxjs,Observable,我一直在玩的是将CombineTest与concatAll()一起使用,但它们仍然被同时调用。我可以循环调用每一个,但我总是想知道RXJS工作流中是否有更好的方法 combineLatest(arrayOfApiObservables).pipe(concatAll()).subscribe(); 这里的问题是您使用了combinelateest操作符,该操作符只有在所有可观察对象发出后才会发出值(例如,它同时调用所有对象) 在此之后,concatAll不能影响arrayofapiobserv

我一直在玩的是将CombineTest与concatAll()一起使用,但它们仍然被同时调用。我可以循环调用每一个,但我总是想知道RXJS工作流中是否有更好的方法

combineLatest(arrayOfApiObservables).pipe(concatAll()).subscribe();

这里的问题是您使用了
combinelateest
操作符,该操作符只有在所有可观察对象发出后才会发出值(例如,它同时调用所有对象)

在此之后,
concatAll
不能影响
arrayofapiobservatives
,因为它们已经被调用了

正确的方法是创建一个高阶的可观测值(发出可观测值的可观测值),这可以在操作员的帮助下从实现,然后您可以通过concatAll实现所需的结果

concatAll
定义如文档所示:
通过按顺序连接内部可观测值,将高阶可观测值转换为一阶可观测值。

let{
间隔
从…起
}=rxjs
让{
拿
目录,
马普托
}=rxjs.com
let ref=document.querySelector(“#container”)
const obs1$=间隔(1000)。管道(取(1),映射到('obs1');
const obs2$=间隔(500)。管道(取(1),映射到('obs2');
const obs3$=区间(2000)。管道(取(1),映射到('obs3');
让allObservables$=from([obs1$、obs2$、obs3$)
allObservables$.pipe(
concatAll()
).订阅((x)=>{
console.log(x)
container.innerHTML+=`${x}`
})

如果希望以顺序方式执行它们,可以在管道()中使用concatMap()。 大概是这样的: 第(1)款 .烟斗( concatMap(结果=>{ 控制台日志(结果); 归还(2); }), concatMap(结果=>{ 控制台日志(结果); 归还(3); }), concatMap(结果=>{ 控制台日志(结果); 归还(4); }), concatMap(结果=>{ 控制台日志(结果); 归还(5); }), concatMap(结果=>{ 控制台日志(结果); 归还(6); }) ) .订阅(res=>{ 控制台日志(“完成”); });


但是,如果您想一次执行所有这些操作,然后等待它们全部完成,那么只需使用forkJoin()。

根据文档,concatAll()一次执行每个可观察到的操作:。但是这里的
combineLatest
已经订阅了每一个观测值。我想您正在寻找
concat(…arrayofapiobservates)
是的,我尝试了上面提到的
concat
方法,它似乎提供了您描述的功能。