是否有任何方法可以查明localForage/indexedDb是否正在处理数据
Is there any way to find out if localForage/indexedDb is processing data?
所以我有了这个web应用程序,并且我正在使用async localForage(具体来说是angular localForage)。现在,我想警告用户,如果他试图关闭浏览器窗口,而仍有一些本地Forage操作在进行。
我知道至少浏览器知道,因为在Firefox中,如果我关闭了窗口,它会给我一个警告(尽管是在我再次打开窗口之后),一些indexedDb操作被取消了(localForage使用indexedDb)。
没有类似的服务,但您可以用的自定义服务包装localForage
- 启动
localForage
操作后设置一个特殊标志 - 释放回调中的标志(一旦操作完成)
我觉得这有点棘手,因为我不知道任何"IsBusy"函数可以与localForage甚至IndexedDB一起使用。可以专门设计一个合适的解决方案来检查单个操作是否已经完成。这也可以被用作所有localForage异步操作的全规模监视器。
例如:
function cbFunc(err, value) {
// Run this code once the value has been
// loaded from the offline store.
console.log(value);
DBWrapper.numCurrOps--;
if (DBWrapper.numCurrOps === 0)
DBWrapper.isBusy = false;
}
var DBWrapper = {
isBusy: false,
numCurrOps: 0,
getItem: function(key, cbFunc){
DBWrapper.isBusy = true;
DBWrapper.numCurrOps++;
localforage.getItem('somekey', cbFunc);
}
};
这是一个包装器的例子,它可以帮助您确定后台是否至少有一个正在运行的异步操作正在等待完成。您可以向singleton对象添加更多的函数,并使它们更改"isBusy"属性。
相关文章:
- 访问布局信息是否也会导致浏览器重排
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 如何检测是否有溢出
- jQuery中是否内置了任何字符串格式化函数
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- IndexedDB对象键:大小是否重要
- 如何检查在IndexedDB中是否找不到键
- 是否可以在IndexedDb事务期间将对象写入文件
- IndexedDB是否支持类似SQL的事务
- 从前一个事务的完整回调开始打开新的 IndexedDb 事务是否安全
- Breezejs 是否支持 IndexedDB
- 是否有任何方法可以查明localForage/indexedDb是否正在处理数据
- 是否可以在indexedDB上创建触发器
- 如何检测IndexedDB是否已启用
- 当用户试图删除indexedDB数据库时,是否有方法执行函数
- 我怎么知道indexedDB请求循环是否已经结束
- 检查IndexedDB数据库是否存在
- 是否有IndexedDB的文本过滤过滤器
- 是否有可能排序indexedDB结果集没有临时数组,即通过使用db查询
- 是否有一种方法来阻止Web存储和IndexedDB关于模式的一部分起源