对于数据共享,我应该选择 Provider 还是 Local Storage
Posted
技术标签:
【中文标题】对于数据共享,我应该选择 Provider 还是 Local Storage【英文标题】:For data sharing either Provider or Local Storage should I select 【发布时间】:2018-07-23 14:55:27 【问题描述】:由于LocalStorage
的速度慢,我想使用Providers
进行数据共享。那么您能否告诉我,由于 Ionic 3 移动应用程序中的这种方法,我是否必须面对任何问题?
注意:提供者是singleton
这样声明:
project.ts
@Injectable()
export class ProjectProvider
project: Project
constructor(()
在我需要时在任何其他页面上使用:
home.ts
constructor(private projectProvider: ProjectProvider)
ionViewDidEnter()
this.projectProvider.project = val;//after this I can use this anywhere
我用上面的方法代替了这个:
const project: Project = await this.storage.get('project');
在这里你可以看到我必须等到它检索到。这是我的应用程序的一个问题,因为我的客户需要开发一个页面上几乎没有加载器图标的应用程序。那么我是否必须面对这种方法的任何问题?
【问题讨论】:
为什么不在 Storage 调用中使用 promise?而你使用 SQLLite 代替 localstorage,对吗? 自从我来自C#
世界以来,我真的很喜欢这种模式:)。以及我需要立即使用该数据的用例。 @Pterrat 是的SQLLite
.
好的,我认为您的代码是正确的。你不会有任何问题。也许你可以提高你的 ProjetProvider 关于初始化项目的价值
我今天实现了完全相同的模式,并且我也意识到任何意想不到的问题。即使有承诺,localstorage 的性能也太差了。
【参考方案1】:
如果用户将刷新页面(向下推页面将刷新),提供程序将丢失数据,您可以将提供程序用作单例,但它们不适合持久数据。使用提供程序在组件之间共享数据。
【讨论】:
我的应用无法刷新页面。不,拉动刷新。我也将提供者用作单例。现在,你的想法是什么?还是这样不好?因为我的用例不同。我不喜欢在页面上使用加载图标。 (即我喜欢。但我的客户不喜欢:D) 您可以从本地存储预加载并将其放在提供程序上,一种“缓存”。 希望你不理解我的用例。我不喜欢等到数据来自缓存或本地存储。那么我有哪些选择呢?感谢您的反馈。以上是关于对于数据共享,我应该选择 Provider 还是 Local Storage的主要内容,如果未能解决你的问题,请参考以下文章
对于通过 HTTP 对公共地理位置数据进行可扩展的频繁读取/写入,我应该选择哪种解决方案?
对于我的 iOS 笔记应用程序来说,这是最好的 iCloud 方法,其中包含文本、照片、音频和绘图笔记。我应该选择文档存储还是 CloudKit?