javascript - 如果在一个已经完成后调用 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 多岁时,浏览器似乎相对轻松。
这是为什么?
提前致谢
解决方案
复制评论:
我只使用一笔交易就解决了这个问题。问题的根源在于我使用了带有 await Dexie.waitFor() 的嵌套异步函数。我认为在 waitFor 中使用嵌套的 Promise 会导致调用内部的 Promise 有一些延迟
推荐阅读
- c# - 缺少选项“ASP.NET Web 配置”工具
- python - 意外的关键字参数“严格”
- javascript - 如何使用工作路由器链接将组件正确添加到我的 Jhipster + Angular 项目中?
- dll - 如何在 dll 中嵌入 VCL 组件并在 VCL 应用程序中使用它?
- shell - 为 fzf 在“fd”结果前加上“~/”。Sed 抱怨“找不到匹配项”
- reactjs - 如何使用 VSCode 在 Firefox 中保留扩展并请求启动
- ruby - Ruby 循环覆盖值
- javascript - 查找两点之间的相对角度
- matlab - MATLAB中的大量线性方程
- python - 无法使用 Python Selenium 启动 Opera