请检查下面的代码,为什么它不起作用? 我有一个可观察的旅程列表,我想过滤这些旅程并将其作为旅程数组返回。
private onTest (id: number): Journey[] {
this.allJourneys$.map(journeyList => {
return journeyList.filter(journey => journey.comPoints.some(jcompoint => jcompoint.id === id));
});
}
答案 0 :(得分:0)
您没有return
声明
this.allJourneys$.map(journeyList => {
应该是
return this.allJourneys$.map(journeyList => {
很显然,最后,您必须subscribe
才能获得结果,因为这是异步代码。
onTest(123).subscribe(list=>{list will be here. Do whatever you like with it});
答案 1 :(得分:0)
您可以使用async
/ await
和Promise
来等待服务呼叫结束:
首先,您应像这样导入toPromise
:
import 'rxjs/add/operator/toPromise'
然后方法应该是这样的:
private async onTest (id: number): Journey[] {
const result = await this.allJourneys$.toPromise(); // converts the Observable to a Promise
return result.filter(journey => journey.comPoints.some(jcompoint => jcompoint.id === id));
}
请注意,每个调用onTest
方法的方法都应使用await
关键字来调用。