当我们要在事务级别上处理IndexedDB错误时,我们有两个选择:onabort
和onerror
处理程序。
它们之间有什么区别?
MDN并不是很有帮助; it only says:
考虑使用
IDBTransaction.onabort
来处理非 成功完成交易。
这是否意味着onerror
处理程序将仅处理onabort
处理程序将处理的一部分错误?
答案 0 :(得分:1)
在失败的请求(error
实例)上触发了IDBRequest
事件;它从请求到请求的事务(IDBTransaction
)到事务的连接(IDBDatabase
)冒泡。在任何时候都可以将其记录下来,并且可以通过调用preventDefault()
来防止默认行为(中止事务)。
在已中止的事务处触发abort
事件。 complete
事件会触发已成功提交的事务。
事务可能由于与特定请求无关的原因而失败(例如,超出配额,I / O错误等)。因此,如果您想知道事务失败,请注意abort
事件。同样,由于您的逻辑可能会阻止请求错误的默认行为来中止事务,因此在事务上看到error
事件并不能告诉您事务是否最终会成功。