我已经为google API创建了一个服务,并在promise响应中堆叠。让我告诉你我的代码:
getPromise: Promise<any>;
loadSheets: Array<any>;
constructor(public _checkAuthApiService: CheckAuthApiService) { }
ngOnInit() {
if (this._checkAuthApiService) {
this._checkAuthApiService.checkAuth().then(res => {
if (res && !res.error) {
this.loadSheetsFunc();
}
});
}
//setTimeout(function(){},1000); //When i add this it works :(
}
loadSheetsFunc = () => {
this.getPromise = new Promise((resolve: any, reject: any) => {
resolve(this._checkAuthApiService.loadSheetsApi())
});
this.getPromise.then((res: any) => this.sheetsResults(res));
};
sheetsResults = (res: any) => this.loadSheets = res.result.values;
不确定我缺少什么但是当我在seTimeout
ti中添加ngOnInit
时,我会在视图中获得我想要的数据。有人可以帮我解决这个代码,或者建议我使用Observables更好的方法。先感谢您。
答案 0 :(得分:0)
setTimeout()
导致完整的Angular2变化检测周期,这就是为什么这会使Angular2识别更新的属性。
Angular2没有识别更新而没有setTimeout()
表示polyfills有问题(可能是加载订单)。
我会对您的代码进行一些更改
loadSheets: Array<any>;
constructor(public _checkAuthApiService: CheckAuthApiService) { }
ngOnInit() {
if (this._checkAuthApiService) {
this._checkAuthApiService.checkAuth().then(res => {
if (res && !res.error) {
this.loadSheetsFunc();
}
});
}
}
loadSheetsFunc() {
this._checkAuthApiService.loadSheetsApi()
subscribe(val => this.sheetsResults(res));
}
sheetsResults(res: any) {
this.loadSheets = res.result.values;
}
我不知道loadSheetsApi()
返回的内容(假设为Observable
)。