【发布时间】:2019-05-31 20:27:53
【问题描述】:
我正在尝试在 Ionic4 LoadingController 之上创建一个包装服务 LoaderService。
这是LoaderService的代码sn-p
export class LoaderService {
loader: HTMLIonLoadingElement;
constructor(public loadingController: LoadingController) {
console.log('constructor called');
this.createLoader();
}
async createLoader() {
this.loader = await this.loadingController.create({
message: 'Loading',
});
console.log('loader created');
}
async showLoader() {
await this.loader.present();
}
hideLoader() {
this.loader.dismiss();
}
}
要实现的目标:使用服务我想在我的应用程序中创建一个加载器实例,并允许组件在进行 API 调用时显示和关闭加载器。
问题:当我在组件中使用LoaderService 时,我得到TypeError: Cannot read property 'present' of undefined。
这是因为在异步创建加载器之前调用了showLoader。
这是我的组件在调用 API 和调用加载器时的代码:
getTopHeadlines() {
this._loaderService.showLoader();
this._newsApiServcie.getTopHeadLines('in')
.subscribe(res => {
this.articleList = res.articles;
this._loaderService.hideLoader();
});
}
【问题讨论】:
-
为什么不将 create 和 show loader 合并到一个异步方法中呢?我知道您想在这里进行优化,并且只“创建一次”,但这不会为您赢得太多
标签: javascript angular ionic-framework async-await ionic4