angular - 函数返回 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。
解决方案
在您的问题中,测试方法不返回可观察对象,您只需要返回获取可观察对象,这将解决测试返回可观察对象的部分,您可以使用 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))
推荐阅读
- sql - 更新 MS Access 表中的多条记录(UPDATE SELECT UNION ALL)
- ios - why doesn't this code for passing data between controllers work?
- typescript - How to validate checkbox list?
- java - 有意图地启动前置摄像头
- php - Docker, Nginx. PHP-fpm Upload progress bar not work
- facebook - 注册表格的 Facebook Pixel 事件
- hana - SAP HANA 序列由 Max 或 Max +1 重置
- download - 如何从 openstreetmap.org 下载特定区域中的所有道路和节点
- python - 在 keras 中包含 tensorflow 层的错误
- android - Android Edit text onclicklistener 在第一次点击时不起作用