2013-02-25 90 views
0

我刚刚注意到,如果您要将数据插入到WebSQL中,并且达到了最大大小限制,iPad会弹出用户提示您是否要增加尺寸。但是,即使您批准,当前事务也会回滚。我想知道是否有什么可以做的,以防止回滚,所以你可以继续?WebSql:如果已达到大小限制,事务会回滚

Here是测试代码。实际回滚的代码是

db.transaction(function (tx) { 
    ... // create the table // ... 
    for(var i = 0; i < 10000; i++) { 
     insertData(tx) ; 
    } 
}, 
function() { 
    console.log("Transaction error -> rollback") ; 
}, 
function() { 
    console.log("transaction is ready") ; 
}) ; 

有什么建议吗?

干杯

回答

2

用的WebSQL在my blog post详述以处理空间不足的情况下的一种方法。基本上,你没有权力拒绝浏览器来提示用户,所以你必须处理这种情况。简单的做法是告知用户您需要更多空间,只需强制重新提示即可增加大小,交易的成功回调将调用您的原始代码。

如果您真正打算说的是您希望保留所有代码 - 直到空间用完,您可以保留一个外部索引,指出在事务回滚之前您已经管理了多少内存,然后用前面的限制重做交易。这样,所有可能填入的数据都将在那里(其余的将不会写入)。