我正在使用dexiejs在Indexdb表中插入数据(大约1万条记录)。
rw事务完成后,我正在使用以下方法进行检查:
try {
await QDB.transaction("rw", table1, table1, async tx => {
//ALSO CHECK TX
tx.on("complete", () => console.log("COMPLETED"));
//here goes the bulkadd code ...
});
console.log("COMPLETED");
} catch (e) {
console.log(e);
}
因此,在完成上述操作之后,我尝试执行另一个仅修改某些记录的事务,但是最后一个事务甚至开始之前大约需要20秒钟。
我什至在chrome profiler中跟踪了整个过程,在最后一次交易开始之前的20年代,浏览器似乎相对容易一些。
为什么?
提前感谢
复制评论:
我仅使用一项交易就解决了。问题的根源虽然是我在等待中使用嵌套异步函数Dexie.waitFor()。我认为在waitFor中使用嵌套的Promise导致内部承诺被延迟调用]
您如何检测第二个事务何时“开始”-解决它中的第一个操作时是它?
无论如何,可能有几个原因。一个是如果您正在进行另一个只读事务,该事务将阻止下一个事务完成。我想,另一个可能是在处理完成后,处理IndexedDB数据处理的后台线程可能正在忙于清理工作。如果是这样的话,我想它不会在每次运行后发生,但是会偶尔发生。