首页 > 解决方案 > 如果在一个已经完成后调用 IndexDB 中的事务不会立即启动

问题描述

我正在使用 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 profiler 中追踪了整个过程,在最后一次交易开始之前的 20 多岁时,浏览器似乎相对轻松。

这是为什么?

提前致谢

标签: javascriptindexeddbdexie

解决方案


复制评论:

我只使用一笔交易就解决了这个问题。问题的根源在于我使用了带有 await Dexie.waitFor() 的嵌套异步函数。我认为在 waitFor 中使用嵌套的 Promise 会导致调用内部的 Promise 有一些延迟


推荐阅读