【发布时间】:2017-10-31 07:54:31
【问题描述】:
我想使用 AngularJS 4 从 API 流式传输数据。当我第一次调用 API 时没有数据,但最终会在 15 - 30 秒内返回更多结果。
这是我的组件:
export class ResultsComponent implements OnInit {
results: Results;
constructor(
private searchService: SearchService,
private route: ActivatedRoute
) {}
ngOnInit(): void {
this.route.params
.switchMap((params: Params) =>
this.searchService.getResultsObservable(params['searchKey']))
.subscribe(data => { this.results = data; });
}
这是我的服务调用:
我正在使用上面的 Observable 调用,但我也包含了 Promise 调用。
getResults(searchKey: string): Promise<Results> {
const url = `${this.apiUrl}/${searchKey}/0`;
return this.http.get(url)
.toPromise()
.then(response => response.json() || {})
.catch(this.handleError);
}
getResultsObservable(searchKey: string): Observable<Results> {
const url = `${this.apiUrl}/${searchKey}/0`;
return this.http
.get(url)
.map(response => response.json() || {});
}
我认为我需要使用 Observable 调用,但我不确定我需要如何处理组件内的调用。
【问题讨论】:
-
AngularJS和Angular 4是两个不同的框架。你在这里使用的是Angular 4。您可能想要编辑您的问题并将AngularJS替换为Angular. -
@mridula 谢谢!我已经更新了问题。
-
您遇到的具体问题是什么?从阅读您的问题中我真的无法判断:(。您从组件中观察到的调用处理看起来不错。
-
@Nehal 我不确定如何将我的 SearchKey 作为参数传递,然后将结果流回我的视图。目前,我只在 ngOnInit() 期间调用该服务一次,我应该以不同的方式执行此操作吗?我的组件如何知道继续检查更多数据?
标签: angular angular2-observables ngoninit