IDBTransaction:onabort与onerror

时间:2018-09-21 16:09:00

标签: javascript error-handling transactions indexeddb

当我们要在事务级别上处理IndexedDB错误时,我们有两个选择:onabortonerror处理程序。

它们之间有什么区别?

MDN并不是很有帮助; it only says

  

考虑使用IDBTransaction.onabort来处理非   成功完成交易。

这是否意味着onerror处理程序将仅处理onabort处理程序将处理的一部分错误?

1 个答案:

答案 0 :(得分:1)

在失败的请求(error实例)上触发了IDBRequest事件;它从请求到请求的事务(IDBTransaction)到事务的连接(IDBDatabase)冒泡。在任何时候都可以将其记录下来,并且可以通过调用preventDefault()来防止默认行为(中止事务)。

在已中止的事务处触发abort事件。 complete事件会触发已成功提交的事务。

事务可能由于与特定请求无关的原因而失败(例如,超出配额,I / O错误等)。因此,如果您想知道事务失败,请注意abort事件。同样,由于您的逻辑可能会阻止请求错误的默认行为来中止事务,因此在事务上看到error事件并不能告诉您事务是否最终会成功。