函数返回Observable,但由于返回嵌套值而出现问题

时间:2019-09-25 20:16:55

标签: angular typescript observable

我有一个返回可观察值的函数。

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));
}

此promise解决方案是解决该问题的方法吗,还是有一个类似于上述的更干净的版本?我觉得以这种方式使用Promise是很容易的事。

1 个答案:

答案 0 :(得分:2)

在您的问题中,测试方法未返回可观察到的值,您只需要返回获取可观察到的值,这将解决测试返回可观察到的部分,您可以使用map rxjs运算符通过将一个函数应用于来转换结果使用任何您需要使用管道的rxjs运算符,而仅使用一个rxjs运算符作曲家即可。

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

要获取您需要订阅测试方法的值

test(10).subscribe(res => console.log(res))