错误:类型'OperatorFunction <{},{} |属性'subscribe'不存在可观察的<任何>>

时间:2019-01-11 22:15:37

标签: javascript angular typescript asynchronous rxjs

为什么我不能订阅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');
    }

加速的结果是按顺序获得所有租金,然后以相同的顺序将其推入“结果”数组。

1 个答案:

答案 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$)
);