首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果在一个事务已经完成后调用,IndexDB中的事务不会立即启动。

如果在一个事务已经完成后调用,IndexDB中的事务不会立即启动。
EN

Stack Overflow用户
提问于 2020-01-09 16:27:34
回答 2查看 103关注 0票数 0

我使用dexiejs在Indexdb表中插入数据(大约10k记录)。

在完成rw事务之后,我将使用以下方法检查该事务:

代码语言:javascript
复制
  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多岁的人来说似乎比较轻松。

为什么会这样呢?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-14 08:06:17

复制评论:

--我只使用一个事务来解决这个问题。但是,问题的根源在于我使用了嵌套的异步函数来等待Dexie.waitFor()。我认为在waitFor内部使用嵌套的承诺会导致调用内部承诺时有一些延迟

票数 1
EN

Stack Overflow用户

发布于 2020-01-09 22:59:45

如何检测第二个事务何时“开始”--它中的第一个操作是什么时候被解决的?

无论如何,这可能有几个原因。一种情况是,如果有另一个只读事务正在进行,则会阻止下一个事务完成。另一个,我想,可能是处理IndexedDB数据处理的后台线程可能在事务完成后忙于清理工作。如果是这样的话,我想这不是每次跑步后都会发生的,而是偶尔发生的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59668301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档