首页 > 解决方案 > 函数返回 Observable 但返回嵌套值有问题

问题描述

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

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

到目前为止,它没有返回一个,但你可以看到我想在嵌套的 observable 中返回一个特定的属性。

我希望它返回返回值,但我对返回这个嵌套值的标准方式感到困惑。我想把它变成一个承诺并等待它出来然后进入数据,我清理了它,但我相信它有点hacky。

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 是一种 hack。

标签: angulartypescriptobservable

解决方案


在您的问题中,测试方法不返回可观察对象,您只需要返回获取可观察对象,这将解决测试返回可观察对象的部分,您可以使用 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))

推荐阅读