在初期化ngOnInit()中,有如下代码:
ngOnInit() {
// 调用后台取数据
this.http.get(environment.xxxUrl).subscribe((data) => {
this.dataList = data;
});
// 使用this.dataList
...
}
然后发现在初期化中使用this.dataList时它里面没有数据,当在画面点击其他按钮执行到ts中的方法时,this.dataList有数据,但是只有在初期化的时候才执行过调用后台取数据的方法,也就是说,初期就得到了数据,那是为什么会出现这样的问题?
问了大佬才知道是要async,await和promise相结合,把异步变同步。具体写法如下:
async ngOnInit() {
this.dataList = await this.http.get(environment.xxxUrl).toPromise();
// 使用this.dataList
// 此时就能在初期中取到数据了
}