为什么此代码将打印此内容:
Observable {_isScalar: false, source: Observable, operator: MapOperator}
不是我的服务返回的数组?
const trendingRentals: Observable<any> = this.rentalService.getRentals();
const commonRentals: Observable<any> = this.rentalService.getCommonRentalsTest();
const luxuryRentals: Observable<any> = this.rentalService.getLuxuryRentalsTest();
const concatenation = concat( [trendingRentals, commonRentals, luxuryRentals]);
concatenation.subscribe(
x => console.log(x)
)
答案 0 :(得分:2)
此处的 concat 静态运算符接受可观察的作为参数,而不是 Array 。
如果您传递的是可观察对象数组,则会将嵌套的可观察对象还给您。
答案 1 :(得分:1)
您调用过的原始代码
concat([obs1, obs2, ..., obsN])
从技术上讲,这只是为concat函数提供错误参数的一种情况,正如预期的那样
concat(obs1, obs2, ..., obsN)
正如安德鲁也指出的那样。您可以在learn-rxjs
上阅读有关rxjs函数的更多信息。要深入一点:concat所做的是从其他可观察对象返回一个可观察对象。当执行时调用concat时,它将执行您放入的每个可观察对象,并等到每个可观察对象按顺序完成后再返回。
数组[obs1,...,obsN]不可观察,因此是“怪异”响应。
答案 2 :(得分:0)
我修改了
const concatenation = concat( [trendingRentals, commonRentals, luxuryRentals]);
对于
const concatenation = concat( trendingRentals, commonRentals, luxuryRentals);
现在它可以正常工作了,但是我不明白为什么...有人可以向我解释发生了什么事?