我有一个异步获取用户的服务,我需要从服务中获取用户,但只有在从服务器获取用户之后。是否有可能从我的服务中获取用户并等到用户被提取然后返回它?
这样的东西?
承诺可以做什么?
答案 0 :(得分:1)
是的,你可以实现这样的方法:
userPromise;
constructor() {
userPromise = http.get();
}
get() {
return userPromise;
}
答案 1 :(得分:0)
如Maximus's answer所述,这是可能的,但这不是Angular的做事方式。相反,您应该利用Observables和async
pipe。
您的服务应该只返回一个Observable of users
@Injectable()
export class MyService {
constructor(private http: HttpClient) {}
getUsers = this.http.get(`my.api/users`)
}
在组件中注入此服务。如果您不需要对数据进行任何转换,只需在模板中使用async
pipe即可。
<ol *ngFor="let user of myService.getUsers | async">
<li>{{ user.name }}
</ol>
来自文档:
异步管道订阅
Observable
或Promise
并返回它发出的最新值。发出新值时,async
管道会标记要检查更改的组件。当组件被销毁时,async
管道会自动取消订阅以避免潜在的内存泄漏。
如果您需要转换数据,可以使用the map
operator from RxJS。