Database 多次调用Phonegap存储事务回调

Database 多次调用Phonegap存储事务回调,database,transactions,callback,cordova,indexeddb,Database,Transactions,Callback,Cordova,Indexeddb,我正在开发一个带有本地存储的Phonegap 2.5应用程序,使用事务执行数据库操作。问题是,每隔一段时间,应用程序就会进入一种状态,在这种状态下,对同一事务多次调用事务回调。这是一个如何执行事务的示例(当调用DbAccess的save函数时): 当应用程序进入此状态时,回调函数会被多次调用(通过成功回调函数出错), 虽然save函数只调用一次(警报只弹出一次)。 我怀疑当应用程序创建多个数据库时会出现这些错误。 我创建了一个数据库,其名称基于用于登录应用程序的用户名(用户名和实例变量是用户输入

我正在开发一个带有本地存储的Phonegap 2.5应用程序,使用事务执行数据库操作。问题是,每隔一段时间,应用程序就会进入一种状态,在这种状态下,对同一事务多次调用事务回调。这是一个如何执行事务的示例(当调用DbAccess的save函数时):

当应用程序进入此状态时,回调函数会被多次调用(通过成功回调函数出错), 虽然save函数只调用一次(警报只弹出一次)。 我怀疑当应用程序创建多个数据库时会出现这些错误。 我创建了一个数据库,其名称基于用于登录应用程序的用户名(用户名和实例变量是用户输入):

如果我删除应用程序数据并再次启动,问题就会停止。
我不知道为什么会发生这种情况,任何帮助都将不胜感激。

这是websql,而不是IndexedDB

你的发现似乎是phonegap上的一个bug

尝试在
executeSql
上侦听错误和成功回调。通过侦听成功回调,按顺序执行三个步骤。它应该可以解决这个问题


多个数据库应该没问题。

更正了您的标记,因为这是IndexedDB,而不是localStorageEvent。将Phonegap升级到2.9版后,该行为仍然存在,但是,您的解决方案似乎能够解决问题,谢谢。
function DbAccess(db)
{
    this.db = db;

    this.save = function(data, callback)
    {
        alert('saving'); //called once
        this.db.transaction(function(tx){

            tx.executeSql('CREATE TABLE ...');
            tx.executeSql('DELETE FROM ...');
            tx.executeSql('INSERT INTO ...');

        }, function(error){ 
               //on error
               callback({
               "success" : false
               });
        }, function(){
               //on successs
               callback({
               "success" : true
               });
        });
    }
}
var dbName = username + '_' + instance;
var db = window.openDatabase(dbName, "1.0", "OfflineData", 1000000);