据我了解,IndexedDB事务有两种可能的结果:
存在一些错误,因此不会写入事务中的任何更改,并且oncomplete永远不会触发。
一切正常,所以更改会被写入然后oncomplete
开始。
但是我听到一些用户关于我的应用程序间歇性地无法在Chrome中工作的报告,其中一个声称已将其调试到将oncomplete
标识为问题。他说,即使保存数据并且没有产生错误消息,有时候oncomplete
也没有触发。
我知道这可能不正确,因为我自己无法观察到这个问题,没有人能够提出一系列步骤来重现它。但我之前在IndexedDB中看到了奇怪的特定于浏览器的错误,特别是在多个事务中将大量数据写入大对象存储(问题发生的地方)时。有没有人注意到这样的事情?
答案 0 :(得分:0)
我快速浏览了the spec,并说
要确定事务是否已成功完成,请收听事务的
complete
事件而不是success
事件特定请求的em>,因为事件在success
事件触发后仍可能失败。
这表明可能存在请求成功(即某些数据可能已写入)的情况,即使事务本身已失败(例如写入中断) ?)
听取完整的事件仍然是明智之举,但如果这会导致问题,您也可能希望在请求上监听成功 ,然后您可以识别客户机上发生错误的位置并相应地处理错误,例如检查写了多少,写了更多。