【问题标题】:db.transaction, what comes first the error callback or the success call backdb.transaction,首先是错误回调还是成功回调
【发布时间】:2018-11-06 16:51:42
【问题描述】:

我正在构建一个 Phone Gap 应用程序,并按照documentation 中的示例使用 db.transaction 函数。我在 db.transaction 函数中看到有关参数顺序的一些相互矛盾的信息,我希望有人能解释我所看到的差异。

在下面的例子中,错误回调是第二个参数,成功回调是第三个参数:

function populateDB(tx) {
     tx.executeSql('DROP TABLE IF EXISTS DEMO');
     tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
     tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
}

function errorCB(err) {
    alert("Error processing SQL: "+err);
}

function successCB() {
    alert("success!");
}

var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(populateDB, errorCB, successCB);

这是另一个例子,成功回调是第三个参数,错误回调是第四个。

function populateDB(tx) {
        tx.executeSql('DROP TABLE IF EXISTS DEMO');
        tx.executeSql('CREATE TABLE IF NOT EXISTS DEMO (id unique, data)');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (1, "First row")');
        tx.executeSql('INSERT INTO DEMO (id, data) VALUES (2, "Second row")');
    }

    function queryDB(tx) {
        tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
    }

    function querySuccess(tx, results) {
        var len = results.rows.length;
        console.log("DEMO table: " + len + " rows found.");
        for (var i=0; i<len; i++){
            console.log("Row = " + i + " ID = " + results.rows.item(i).id + " Data =  " + results.rows.item(i).data);
        }
    }

    function errorCB(err) {
        console.log("Error processing SQL: "+err.code);
    }

    function successCB() {
        var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
        db.transaction(queryDB, errorCB);
    }

【问题讨论】:

    标签: html sqlite cordova transactions


    【解决方案1】:

    不,这里没有冲突。 'transaction' 是 'Database' 对象的方法,它的参数是 'query,errorCallback,successCallback'。

    另一方面; 'executeSql' 是 'Transaction' 对象的方法,它的参数如 '查询,IDONTKNOW,成功回调,错误回调'。

    所以文档说的是实话,但我不明白为什么回调参数的顺序也不同。我认为不同的人设计了这些对象。

    【讨论】:

    • 仅供参考 - 事务的第二个参数是查询参数(使用参数化查询时)
    猜你喜欢
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多