返回一个可观察的列表

时间:2019-03-27 13:56:52

标签: angular

请检查下面的代码,为什么它不起作用? 我有一个可观察的旅程列表,我想过滤这些旅程并将其作为旅程数组返回。

  private onTest (id: number): Journey[] {

    this.allJourneys$.map(journeyList => {
      return journeyList.filter(journey => journey.comPoints.some(jcompoint => jcompoint.id === id));
    });
  }

2 个答案:

答案 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 / awaitPromise来等待服务呼叫结束:

首先,您应像这样导入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关键字来调用。