试着理解angular 2中的Promise

Trying to understand the Promise in angular 2

本文关键字:中的 Promise angular      更新时间:2023-09-26

我已经为谷歌API创建了一个服务,并在承诺响应中堆叠。让我展示一下我的代码:

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;

不知道我错过了什么,但当我在ngOnInit中添加seTimeout时,我得到了我想要的数据。有人可以帮助我与这段代码,或者也许建议我一个更好的方式使用可观察对象。提前谢谢你。

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)。