我有一个类型功能的服务
getSummary(id:string,universe:string):Observable< INTsummary []>
当我调用它时,我只想要INTsummary []中的第一项,所以我试图使用rxjs first运算符来执行此操作:
loadQuickSummary(){
var obj = this.myService.getSummary(this.user.id, this.user.universe).first();
console.log("getting quick summary");
obj.subscribe(r => {
console.log(`first value ${JSON.stringify(r)}`)
})
}
从阅读文档和*,这应该返回一个对象,但我得到一个INTsummary数组.
我怎样才能回到INTsummary []数组中的第一个对象?
解决方法:
第一个()返回Observable的第一个发射.所以当你有源发出像INTsummary []这样的数组时,它会发出它发出的第一个数组(而不是数组中的第一个数组).
根据您的描述,您希望获得数组中的第一项,因此有两种方法:
this.myService.getSummary(this.user.id, this.user.universe)
.map(array => array[0])
…或者如果你真的想使用first()运算符:
this.myService.getSummary(this.user.id, this.user.universe)
.concatAll() // flatten the array into separate emission
.first()