【发布时间】:2017-08-03 20:40:00
【问题描述】:
根据我的研究,localStorage 对于 iOS 上的 Cordova/Phonegap 应用程序不可靠,因为它可以在设备内存不足时被操作系统刷新。
由于我的整个代码都是同步编写的,而且我没有闲暇时间为这个特定项目重写代码,我正在寻找一个必须同步的localStorage 的直接替代品,不是 a同步的,它将持久存储存储的数据而不会受到刷新的威胁。
【问题讨论】:
标签: cordova local-storage
根据我的研究,localStorage 对于 iOS 上的 Cordova/Phonegap 应用程序不可靠,因为它可以在设备内存不足时被操作系统刷新。
由于我的整个代码都是同步编写的,而且我没有闲暇时间为这个特定项目重写代码,我正在寻找一个必须同步的localStorage 的直接替代品,不是 a同步的,它将持久存储存储的数据而不会受到刷新的威胁。
【问题讨论】:
标签: cordova local-storage
没有同步解决方案。 Cordova 存储插件由于底层技术的性质而具有异步性,用于桥接 Web 和本机功能。 Webview 支持的存储选项本质上也是异步的。
您最好的选择是转换为异步存储 API。我知道你不想这样做,但你可以通过使用 ES2017 的 async/await 功能加快速度,然后使用 TypeScript 或 Babel 转换为 ES5。此功能要求您使用的 API 返回 Promise,但通常有很多选项可供选择。
【讨论】:
我会尝试使用JSStore。它不是为 Cordova 制作的,我不完全确定它是否有效,但值得一试。当您指定 onSuccess 参数时,它会返回 数据,而不是像大多数数据持久性 API 调用那样的承诺。
我只建议在像您这样的情况下使用它,在这种情况下,需要进行大量重构才能使用一种使用异步 API 调用的持久性形式。即使这样,您也应该测试应用程序的性能损失。
编辑:根据Cordova's storage options page,IndexedDB,JSStore 中使用的持久模式,仅适用于 Windows、Blackberry 10 和 Android (4.4+),所以它不能解决你的问题。这意味着唯一的出路是重构代码以适应异步 API。
【讨论】: