在IndexedDB中,是否存在将事务中的数据写入磁盘但是不完整的情况不会触发的情况?

时间:2015-01-01 23:35:06

标签: javascript google-chrome indexeddb

据我了解,IndexedDB事务有两种可能的结果:

  1. 存在一些错误,因此不会写入事务中的任何更改,并且oncomplete永远不会触发。

  2. 一切正常,所以更改会被写入然后oncomplete开始。

  3. 但是我听到一些用户关于我的应用程序间歇性地无法在Chrome中工作的报告,其中一个声称已将其调试到将oncomplete标识为问题。他说,即使保存数据并且没有产生错误消息,有时候oncomplete也没有触发。

    我知道这可能不正确,因为我自己无法观察到这个问题,没有人能够提出一系列步骤来重现它。但我之前在IndexedDB中看到了奇怪的特定于浏览器的错误,特别是在多个事务中将大量数据写入大对象存储(问题发生的地方)时。有没有人注意到这样的事情?

1 个答案:

答案 0 :(得分:0)

我快速浏览了the spec,并说

  

要确定事务是否已成功完成,请收听事务的complete 事件而不是success 事件请求的em>,因为事件success 事件触发后仍可能失败。

这表明可能存在请求成功(即某些数据可能已写入)的情况,即使事务本身已失败(例如写入中断) ?)

听取完整的事件仍然是明智之举,但如果这会导致问题,您也可能希望在请求上监听成功 ,然后您可以识别客户机上发生错误的位置并相应地处理错误,例如检查写了多少,写了更多。