问题标签 [localforage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
angular - 使用 Angular 4 的 LocalForage
我有一个可以切换的项目列表(使用角度材料2),当打开/关闭时,我想将状态保存在本地存储中。
http://plnkr.co/edit/ckk4BCkNYNgNzJodW53t?p=preview
我不知道为什么,但 [expanded] 运行多次..
html
js
angularjs - 在成功登录调用中设置 AngularLocalForage
我创建了基于令牌的授权。登录后,它将令牌存储在 localStorage 中,但我意识到 localStorage 是同步的,这不是我在单页应用程序中想要的。所以我研究了Angular Local Forage,正如他们所说的那样是异步的。
首先我下载 localForage 和 angularLocalForage 并将其添加到索引中
接下来,我在 app.js 中添加模块
在 loginService 中成功调用时,我添加了以下几行:
在包装整个页面的外部控制器中,我添加了$localForage
get 方法:
不幸的是,这不起作用并使所有页面都没有显示它会导致此错误:
TypeError: $localForage.get is not a function at new (ExternalCtrl.js:11) at Object.invoke (
javascript - Vue.js Axios 从本地存储(localforage)获取值返回 promise 对象而不是值
我正在尝试从通话中获取价值localforage
,axios
但它不起作用。
我在控制台中收到 403 错误:
XHR 加载失败:获取“ https://api.example.org/api/?uname=[object%20Promise] ”。
我也尝试过this.$getItem('LSuname').then(value => { return value })
,this.$getItem('LSuname').then(function (value) { return value })
但我得到了相同的 403 和错误的 url,最后有一个承诺
我能够正确地返回值而不会在我的 vue 的其他地方出现问题,如下所示:
javascript - 在 iOS 上使用 Cordova 的持久数据
我正在为我的游戏开发一个排行榜(用 JS 编写),我需要在本地存储更多 .html 和 .js 页面之间的一些用户信息,就像登录和 bestscore 的用户名一样。
我使用 localStorage 完成了它,并且在桌面浏览器上它完全没有问题,对于使用 Cordova 包装的 Android 应用程序也是如此。然而,在 iOS 中对其进行测试导致 localStorage 在每次应用重启时都被清除了!谷歌搜索后,我决定切换到 localForage。同样,Android 和桌面(Mac 上的 Chrome)工作得很好,但在 iOS 上,当应用程序从多任务处理中关闭时,数据会被清除。我尝试将 WEBSQL 和 INDEXEDDB 作为 localForage 驱动程序。我在两部不同的 iPhone(iOS 10.3.2 和 iOS 10.3.3)上进行了测试,两者都没有耗尽内存。我使用 CocoonJS 来包装文件。请问有什么帮助吗?完全不知道这个问题来自哪里。先感谢您。
javascript - 使用 Promise 获取和设置值时,与 Indexed db 交互的最佳方式是什么?
我正在使用LocalForage 库在我的网络应用程序中保存离线数据。
我有一个单独的服务来获取和设置索引数据库的值。服务如下,
});
以下是观点,
以下是控制器,
问题发生在 setInterval 因为它会使用不同的参数调用 $scope.$saveAsync() 方法两次。但是在解决这两个承诺时,根据这种情况,它们只包含初始值 1,2,3。因此程序将在第一个 $scope.$saveAsync() 方法调用中设置 1,2,3,6,在第二个 $scope.$saveAsync() 方法调用中设置 1,2,3,7。最后只有 1,2,3,7 将被保存在 indexeddb 中,缺少值 6。
有一个 $q.all 可以解决这个问题。但它仅适用于 setInterval 范围内。因为用户可以在 setInterval 点对相同的数据进行读写操作,也可以指向相同的数据运行。
同样,当我尝试同时多次获取特定键值并尝试更新该键的值时,就会出现问题。因为调用 get() 方法有时会返回旧数据集,因为 get 调用将是异步的。因此,当在旧数据集中调用 set 方法时,索引数据库中存在松散的数据。
谢谢指教。
javascript - 如何从第二个 Web 视图访问我的应用程序的 ionic-storage (localForage)?
我有一个使用离子存储的离子应用程序。我还有一个原生的 android 后台服务,它生成一个单独的 webview 来在 ionic 应用程序之外工作。此服务需要写入应用程序的存储空间。我对这两个存储对象使用相同的配置(name
& storeName
),但它们似乎正在访问完全不同的空间,我猜是因为它们是分开的WebViews
。
有没有其他人遇到过类似的问题或知道我该如何解决这个问题?
javascript - IndexedDB 结果有时会损坏
我在一个项目中使用“localforage”并且有一个神秘的问题。通过 redux / immutableJS,我存储了一些设置,例如“locale”,从存储中读取它有时有效,但通常无效。
我迷上了 localeforages 查询系统:
这应该输出普通的、序列化的不可变数据字符串:
但很多时候我反而收到这个:
发生错误时,开发人员工具的“应用程序”选项卡显示正确的值(因此不是 NULL)。相同的代码库,绝对没有变化,在当前的 Chrome(从不工作)和 Firefox(有时工作)中显示出不同的行为。
过去有人遇到过类似的错误吗?我不明白普通字符串值有时如何工作,有时却不行。
javascript - 有没有办法最终添加到现有的承诺中?
我正在使用 localforage,它返回对 key() 和 length() 等函数的承诺。我也在使用 $http() ,它也返回一个承诺,但它包含一个 finally() 函数,而另一个函数没有。
我的下游服务不知道是 localforage 还是 $http 发出请求,因此它们都需要相同的承诺结构(最终和然后)。有没有办法最终添加到尚未拥有的承诺中?
我试图将 $q.defer().promise.finally 附加到我来自 localforage 的承诺中,但没有成功。
还有另一种方法可以实现这一目标吗?
javascript - 有没有办法检查 JavaScript 函数是否接受回调?
我正在尝试通过创建 localForage 的全局实例来向纯形式Web 组件添加localForage支持:
storage
并通过属性将其分配给纯形式的实例:
在内部,纯形式执行window[self.storage]
以获取存储对象的句柄并使用.getItem
,.setItem
来同步设置和检索值。
麻烦的是 localForage 是异步的,这意味着.getItem
,.setItem
期望通过回调返回值。因此我目前的逻辑将不起作用:
我意识到我可以将调用包装在 Promise 中,但就其本身而言,纯形式不需要承诺,我不想为此添加该依赖项。
我想做的是检查是否.getItem
或.setItem
需要回调,如果是,请相应地修改代码......
javascript - 将 localForage 与 Cordova 一起使用的正确方法是什么?
我正在尝试将localForage与localForage-cordovaSQLiteDriver一起使用来在cordova应用程序中设置持久存储。它不起作用,我不断将以下条目记录到控制台:
我不确定我localforage
是否正确理解了生命周期。这就是我所拥有的:
在我看来它应该是打印它工作!到控制台。