gpt4 book ai didi

javascript - WebSQL - 事务中丢失

转载 作者:行者123 更新时间:2023-11-28 20:33:38 25 4
gpt4 key购买 nike

我正在使用 WebSQL 和 IndexedDB 开发一个 Web 应用程序。 IndexedDB 在支持它的浏览器中运行良好,我的 WebSQL 实现在大多数浏览器中都可以运行,但是在 Android 上,javascript 执行似乎在 db.transaction 内停止。

这是我的代码。在“启动事务...”之后我没有收到任何控制台日志(并且似乎没有进一步的 JS 执行)。

window.store.getFile = function( filename, callback ) {
var db = window.store.websql.db;
console.log('Initiating transaction...');
db.transaction(function (tx) {
var filename2 = filename;
var query = 'SELECT * FROM file WHERE filename = "'+filename+'"';
console.log('Executing query:'+query);
tx.executeSql(query, [], function(t, r) {
if ( r.rows.length > 0 ) {
var len = r.rows.length, i;
for (i = 0; i < len; i++) {
var filename = r.rows.item(i).filename;
var data = r.rows.item(i).data;
if ( callback ) callback( true, filename2, data );
break; // Break here as only one result should be returned
}
} else {
if ( callback ) callback( false, filename2, null );
}
}, function(t, e) {
console.log(e);
if ( callback ) callback( false, filename2, null );
});
}, function(e) {
console.log('Database transaction error: '+e);
if ( callback ) callback( false, filename, null );
}, function() {
console.log('Transaction success');
});
console.log('Transaction initiated...');
};

(P.S.我也欢迎对我的代码提出任何批评......)

最佳答案

您正在追踪的错误可能是在数据库级别错误处理程序(在 openDatabase 中传递)上引发的。某些 Android 手机只是不接受该错误处理程序的 null 或未定义,症状就是您所描述的。没有错误,没有成功,什么都没有......

另外:您的成功 block 应该位于 try/catch 中,以防止该错误自动出现。

另请注意,成功处理程序的返回值(false/true)将确定抛出错误时发生的情况(回滚或仅发生错误而不回滚)。

关于javascript - WebSQL - 事务中丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15866708/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com