gpt4 book ai didi

javascript - IONIC 确保服务已加载

转载 作者:行者123 更新时间:2023-12-03 03:01:09 26 4
gpt4 key购买 nike

我正在使用 IONIC 和 typescript 编写一个应用程序。我创建了一个存储提供程序和一个网络提供程序(请参阅下面的伪代码)。

存储提供商

class SettingsService {
settings;
constructor(private storage: Storage) {
storage.get("settings").then((data) => this.settings = data);
}

getSettings() {
return this.settings;
}
}

网络提供商

class NetworkService {
constructor(private http: http, private settingsService: SettingsService) {}

getData() {
settings = this.settingsService.getSettings();
//Do more stuff
}
}

当我现在调用函数 getData() 时,可能会出现设置未定义的情况,因为 SettingsService 仍在加载设置。我如何在 NetworkProvider 中等待设置完全加载?

目前我正在使用 setTimeout 来检查设置是否已加载。但我对此并不满意。

感谢您的帮助:)

最佳答案

使用 promise 怎么样?

类似于以下内容:

class SettingsService {
settings = null;

constructor(private storage: Storage) {

}

getSettings(): Promise<{}> {

return new Promise((resolve) => {
if (settings !== null) {
resolve(settings);
} else {
this.storage.get("settings").then((data) => {
this.settings = data
resolve(this.settings);
});
}
});
}
}

class NetworkService {
constructor(private http: http, private settingsService: SettingsService) {}

getData() {
this.settingsService.getSettings().then((settings) => {
//Do more stuff
});
}
}

此外,我认为存储性能很好,所以也许您也可以在 SettingsService 中保留设置变量,并始终从存储中获取值...但我当然不知道您的应用程序,只是一个想法

P.S.:不要忘记存储只能在 platform.ready()

之后使用

关于javascript - IONIC 确保服务已加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380801/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com