我正在寻找一种在加载页面上的所有控件后执行某些操作的方法。这些控件通过调用http get 并行加载。
我尝试了类似于下面的代码,但它似乎没有解决问题。如果工作正常,某些文本应该显示“完成”。事实并非如此。我不确定我是否正确理解 forkJoin 的工作原理。我曾经在 Angular 1.x 中使用 Promise 进行这种链接。任何有助于理解问题和解决方案的帮助都将受到赞赏。
我正在寻找的解决方案类似于 Angular 1.x 的这个问题:Angular将并行和链式请求与 $http.then() 和 $q.all() 结合起来
完整代码位于http://plnkr.co/edit/xH6VJo
来源是 src/dash.ts
这是 Angular 5 和 typescript。
export class dash implements OnInit {
sometext = 'Some text ...';
private httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
constructor(private http: HttpClient) {}
click_me(): void {
this.sometext = '';
forkJoin([
of(this.first_()),
of(this.second_())
]).subscribe(val => {
this.sometext = 'done...';
})
}
first_(): void {
this.http.get<any>('data/sampledata.json',this.httpOptions).subscribe(val=> {
this.sometext = val.items[0].value; …Run Code Online (Sandbox Code Playgroud)