最近Android Chrome的IndexedDB配额管理有变化吗?我在Ionic 3 Cordova应用程序中使用带有适配器IndexedDB的PouchDB.在过去的6个月里,它进展顺利.但是在过去的5天内,我收到的关于数据未在应用中正确加载的投诉显着增加.我的应用只需要3-4 MB的数据.这是我目前所知道的:
我还怀疑也许人们在最后几天拍摄了更多的照片,因为天气非常好,导致可用磁盘空间减少,因此报告的错误数量激增.但我仍然觉得这是一个奇怪的解释.
其他人在他们的应用中发现了类似的问题 除了切换到Cordova-SQLite之外的任何解决方案?
更新2018-05-03:
我想了几件事:
drivers为Ionic的存储:driverOrder: ['localstorage', 'indexeddb', 'sqlite', 'websql']RxJS:如何将原始类型(例如字符串)包装在Observable中,并侦听对该原始类型的更改?
考虑以下示例。setTimeout模拟一些改变字符串的外部事件s。但是,console.log仅触发一次,之后不触发setTimeout。这是为什么?
let s = "Hello World";
Observable.of(s).subscribe(val => {
console.log(val);
});
// some external event changes variable s
setTimeout( () => {
s = "Wat?";
}, 1000);
// Output: prints "Hello World" to console, but not "Wat?"
Run Code Online (Sandbox Code Playgroud)
这个问题听起来可能有些愚蠢,但是我搜索了2个小时的各种RxJS文档和示例,其中大多数使用Arrays或Objects。这不是我想要的。我不想更改属性,函数,数组或类似的东西。只是一个简单的字符串或布尔值或数字。
使用 RxJS,我想订阅事件。问题是:我想在设置事件侦听器之前设置 Observable。
把这想象成两个按钮:Button1 在被点击时会做一些事情,但只有在 button2 将事件侦听器附加到 button1 之后。观察者应该订阅 button1 的点击事件。当应用程序启动时,所有这些都应该连接在一起。Button2 不应该设置观察者!一些没有 RxJS 的代码:
button2.addEventListener('click', function() {
// [...] some code to prevent that button1 has more than one event listener
// attach event listener to button1
button1.addEventListener('click', clickHandler);
// now let observer subscribe itself to clickHandler somehow
// -> HOW?
});
function clickHandler() {
console.log("clicked");
}
Run Code Online (Sandbox Code Playgroud)
编辑:也许,是否有可能观察到某种从不发出任何内容的虚拟事件处理程序,但clickHandler在单击 button2 或类似的东西后变成真正的事件处理程序 ( ) ?!
Edit2:我注意到 2 个按钮不是最好的例子。让我们让它与众不同,并通过某种未知机制附加 button2 的事件侦听器。例如:
// is called by unkown means, i. e. the observer …Run Code Online (Sandbox Code Playgroud) javascript ×2
rxjs ×2
android ×1
cordova ×1
events ×1
indexeddb ×1
observable ×1
pouchdb ×1
typescript ×1