Javascript 有没有办法确定LocalFower/indexedDb是否正在处理数据?
所以我有这个webapp,我使用的是异步localfollow(具体来说是角度localfollow)。现在,我想警告用户,如果他试图关闭浏览器窗口,而仍然有一些本地搜索操作正在进行Javascript 有没有办法确定LocalFower/indexedDb是否正在处理数据?,javascript,angularjs,localforage,Javascript,Angularjs,Localforage,所以我有这个webapp,我使用的是异步localfollow(具体来说是角度localfollow)。现在,我想警告用户,如果他试图关闭浏览器窗口,而仍然有一些本地搜索操作正在进行 我知道,至少浏览器知道,因为在Firefox中,如果我关闭窗口,它会给我一个警告(尽管是在我再次打开窗口之后),一些indexedDb操作被取消(LocalFound使用indexedDb)。没有类似的内容可用,但您可以使用自定义服务包装LocalFound 启动带有localfound的操作后,设置一个特殊标志
我知道,至少浏览器知道,因为在Firefox中,如果我关闭窗口,它会给我一个警告(尽管是在我再次打开窗口之后),一些indexedDb操作被取消(LocalFound使用indexedDb)。没有类似的内容可用,但您可以使用自定义服务包装
LocalFound
localfound
的操作后,设置一个特殊标志我认为这有点棘手,因为我不知道任何“IsBusy”函数可用于localfound甚至IndexedDB。可以专门设计一个合适的解决方案来检查单个操作是否已完成。这也可以作为所有本地异步操作的全面监视器 例如:
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”属性。我希望有一种更简单的方法,但无论如何还是要感谢。如果有人感兴趣,我制作的包装器是开源的,可以找到