0

我刚刚注意到,如果您将数据插入 WebSQL,并且达到最大大小限制,iPad 会弹出用户警报,询问您是否要增加大小。但是,即使您批准,当前事务也会回滚。我想知道是否可以采取任何措施来防止回滚,所以您可以继续吗?

是测试代码。实际执行回滚的代码是

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") ;
}) ;

有什么建议么 ?

干杯

4

1 回答 1

2

我的博客文章中详细介绍了一种使用 WebSQL 处理空间不足情况的方法。基本上,你没有权力拒绝浏览器提示用户,所以你必须处理这种情况。简单的做法就是通知用户您需要更多空间,然后强制重新提示增加大小,其中事务的成功回调调用您的原始代码。

如果您真正想说的是您想保持所有代码运行,直到空间不足,您可以保留一个外部索引,说明在事务回滚之前您设法走了多远,然后重做事务之前的限制。这样,所有可能塞进的数据都会在那里(其余的永远不会被写入)。

于 2013-08-06T13:17:47.283 回答