为什么我不能订阅concat()运算符的结果,即使它看起来与文档和示例中的相同,也是如此 https://rxjs-dev.firebaseapp.com/api/index/function/concat
我已经尝试将其更改为concatMap或concatAll,但是我还有更多问题,此解决方案是迄今为止我发现的最优雅的解决方案。
ngOnInit() {
const trendingRentals = this.rentalService.getRentals().pipe(delay(500));
const commonRentals = this.rentalService.getCommonRentalsTest().pipe(delay(1000));
const luxuryRentals = this.rentalService.getLuxuryRentalsTest().pipe(delay(1500));
const concatenation = concat( [trendingRentals, commonRentals, luxuryRentals]);
concatenation.subscribe(
//Print result
)
}
//All get request are equal but with a different endpoint
public getCommonRentalsTest(): Observable<any> {
return this.http.get('/api/v1/rentals/common');
}
加速的结果是按顺序获得所有租金,然后以相同的顺序将其推入“结果”数组。
答案 0 :(得分:1)
您似乎需要'static' factory function而不是concat operator:
// Find:
import { concat } from 'rxjs/operators';
// Replace:
import { concat } from 'rxjs';
该运算符与另一个可观察到的pipe
方法一起使用。例如:
const stream1$: Observable<any> = ...;
const stream2$: Observable<any> = ...;
const concatenated = stream1$.pipe(
concat(stream2$)
);