【发布时间】:2017-08-12 16:42:32
【问题描述】:
我想从 Observable 中获取字符串值并将该值从函数返回给调用者函数。
例如: 我有一组键,想一个一个地获取所有键的值(字符串)并将其显示为具有菜单栏的 html 组件。
这里是 ts 文件:
key-list.component.ts
public data = [ { 'key': 1, 'value' : this.getValue(1)},
{ 'key': 2, 'value' : this.getValue(2)},
...
];
private getValue(key: number): string {
return this.keyService.find(key).subscribe(response => {
return response;
});
}
keyService.ts
...
public find(key:number): Observable<any> {
return this.http.get(`/api/keys/${key}`).map(res => res.json() || {});
}
...
我想显示 html 组件中的所有值。 但是在 key-list.component.ts 中出现可观察到类型字符串的错误。
我如何解决这个订阅方法并确保 getValue 应该始终返回字符串,并使其完美无缺。
解决办法之一是:
private getValue(key: number): string {
let result: string;
this.keyService.find(key).subscribe(res => result = res);
return result;
}
上述解决方案并不总是有效。 此类问题有哪些替代解决方案?
【问题讨论】:
-
您声明
data的方式是错误的。这不是使用异步函数的方式。
标签: angular typescript rxjs reactive-programming