IndexedDb 是否具有 transaction.completing 事件的等效项?

Does IndexedDb have the equivalent of a transaction.completing event?

有什么方法可以知道所有请求何时完成但在事务提交之前? transaction.oncomplete 事件在调用 transaction.abort() 时不允许 运行 有任何额外的逻辑。因此,更好的方法是使用 transaction.completing 的等价物(我编造的),它只会在所有请求完成后触发,但仍允许调用 transaction.abort()

http://www.w3.org/TR/IndexedDB/

一般来说,这应该被认为是一种很好的做法。在最常见的情况下,简单的语法错误不会使数据库处于不一致的情况。

Is there any way to know when all requests have finished but before the transaction commits?

是的,但您必须编写代码来侦听所有操作的 successerror 事件。没有您想要的 beforecommit 事件。但是请随意提出将其包含在 public-webapps.

中的理由

In the most common case simple syntax errors would not leave the database in a inconsistent case.

数据库如何进入不一致状态?这就是 error 事件存在的原因,默认情况下会导致事务中止。参见 http://w3c.github.io/IndexedDB/#dfn-fire-an-error-event