Angular 返回可观察但返回嵌套值有问题的函数

Angular 返回可观察但返回嵌套值有问题的函数,angular,typescript,observable,Angular,Typescript,Observable,我有一个函数,它返回一个可观察的 test(id: int): Observable<Group>{ this.http.get('test/').subscribe( (result:any) => { resultingVal = Group.fromJson(result.group); }); } 测试(id:int):可观察{ this.http.get('test/').subscribe((结果:any)=>{ resultingVal=Gro

我有一个函数,它返回一个可观察的

test(id: int): Observable<Group>{
  this.http.get('test/').subscribe( (result:any) => {
     resultingVal = Group.fromJson(result.group);
  });
}
测试(id:int):可观察{
this.http.get('test/').subscribe((结果:any)=>{
resultingVal=Group.fromJson(result.Group);
});
}
到现在为止,它还没有返回一个,但是你可以看到我想要返回一个嵌套的可观察对象中的特定属性

test(id: int): Observable<Group>{
  this.http.get('test/').subscribe( (result:any) => {
     resultingVal = Group.fromJson(result.group);
  });
}
我希望它返回returningVal,但我对返回这个嵌套值的标准方法感到困惑。我想把它变成一个承诺,等待它结束,然后进入数据,我清理了它,但我相信它有点黑客

test(id: int): Observable<Group>{
  let resultingVal = null
  let promise = this.http.get('test/').toPromise().then( result => {
     resultingVal = Group.fromJson(result.group);
  });
  return from(Promise.all([promise]).then( _ => resultingVal));
}
测试(id:int):可观察{
让resultingVal=null
让promise=this.http.get('test/').toPromise()。然后(result=>{
resultingVal=Group.fromJson(result.Group);
});
从(Promise.all([Promise])返回,然后(=>resultingVal));
}

这是一个承诺解决方案,还是有一个更干净的版本类似于上述?我觉得以这种方式使用承诺是一种恶作剧。

在你的问题中,测试方法不返回可观测值,你只需要返回get observable,这将解决测试返回可观测值的部分,你可以使用map rxjs操作符通过应用函数来转换结果,要使用任何rxjs操作符,您需要使用管道,而管道只是一个rxjs操作符生成器

test(id: int): Observable<Group>{
  return this.http.get('test/').pipe(map((result:any) => 
     Group.fromJson(result.group))
  );
}

在你的问题中,测试方法不返回可观察的,你只需要返回get observable这将解决测试返回可观察的部分,你可以使用map rxjs操作符通过应用函数来转换结果,要使用任何rxjs操作符,你需要使用pipe,pipe只是一个rxjs操作符生成器

test(id: int): Observable<Group>{
  return this.http.get('test/').pipe(map((result:any) => 
     Group.fromJson(result.group))
  );
}

你能记录下这种可能性吗?我不知道pipe在订阅或推广方面做了什么。我也不确定map函数的作用。我在这里猜测一下,但它看起来像是将输出导入一个映射函数,该函数可能会将其展平,从而使其返回是可观察的?map是switchMap的更新版本吗?@Fallerenreaperi更新了我的答案,希望这能解决你的问题,我想这可能是。我有一件私人事情,我会等一等,然后说这是正确的答案,以防有更好的答案。:)看起来它可能会起作用trick@malnarmawi我注意到你的答案在语法上不正确。我想你们需要在地图后面再加一个开口。你们能记录下这个可能性吗?我不知道pipe在订阅或推广方面做了什么。我也不确定map函数的作用。我在这里猜测一下,但它看起来像是将输出导入一个映射函数,该函数可能会将其展平,从而使其返回是可观察的?map是switchMap的更新版本吗?@Fallerenreaperi更新了我的答案,希望这能解决你的问题,我想这可能是。我有一件私人事情,我会等一等,然后说这是正确的答案,以防有更好的答案。:)看起来它可能会起作用trick@malnarmawi我注意到你的答案在语法上不正确。我想你需要一个额外的打开后的地图。