我使用dexiejs在Indexdb表中插入数据(大约10k记录)。
在完成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分析器中跟踪了整个过程,在上一次交易开始之前,浏览器对那些20多岁的人来说似乎比较轻松。
为什么会这样呢?
提前感谢
发布于 2020-01-14 08:06:17
复制评论:
--我只使用一个事务来解决这个问题。但是,问题的根源在于我使用了嵌套的异步函数来等待Dexie.waitFor()。我认为在waitFor内部使用嵌套的承诺会导致调用内部承诺时有一些延迟
。
发布于 2020-01-09 22:59:45
如何检测第二个事务何时“开始”--它中的第一个操作是什么时候被解决的?
无论如何,这可能有几个原因。一种情况是,如果有另一个只读事务正在进行,则会阻止下一个事务完成。另一个,我想,可能是处理IndexedDB数据处理的后台线程可能在事务完成后忙于清理工作。如果是这样的话,我想这不是每次跑步后都会发生的,而是偶尔发生的。
https://stackoverflow.com/questions/59668301
复制相似问题