#320·idb

`done` 承诺语义混淆,可能导致未捕获的承诺拒绝

作者: golergka创建于 2024年7月18日更新于 2025年11月5日

您的功能请求是否与一个问题有关?请描述。

done 许可目前的工作方式会导致我们无法捕获错误。我们以以下代码为例:

typescript
try {
  const tx = db.transaction(storeName, "readwrite");
  await tx.store.add(value);
  await tx.done;
} catch (error) {
  console.error(error); // 我们期望在此处捕获错误
}

从文档和对代码工作方式的简单直觉来看,我预期如果添加操作失败,我将捕获错误。然而,当我在 Jest 中触发此失败时,我收到了以下结果:

内容来源: jakearchibald/idb