我有一个包含两个非常简单的http.get()
调用,即.getSomething()
和.getSomethingNext()
的服务,它们返回类型Observable<any>
(这些端点返回一个对象数组)。
然后我有了一个调用.getSomething()
的函数。像这样:
getArrays(): Observable<customResult>{
return this.service.getSomething(a, b).pipe(map(item => {
let something = item.map(name => {...}}
}
如果第一个端点返回一个空数组,我想调用第二个也返回一个数组的端点。
[如何在我的服务中创建第三个函数,先调用.getSomething()
,然后调用.getSomethingNext()
,然后返回一个可观察的数组(就像单独调用http.get
一样),如果第一个方法返回一个空数组?
[我使用switchMap
作为高阶运算符,避免了嵌套订阅,并在第一个数组为空的情况下使用三元运算符进行了测试,仅在这种情况下才请求第二个数组。
getArrays(): Observable<customResult>{
return this.service.getSomething(a, b).pipe(
switchMap(arr =>
arr.length === 0 ?
this.service.getSomethingNext(args) :
of(arr)
);
});
getArrays().subscribe(..)