【问题标题】:Do SQLite callback functions have one or two parameters?SQLite 回调函数有一个或两个参数吗?
【发布时间】:2019-10-12 02:19:07
【问题描述】:

SQLite 回调函数有一个或两个参数吗?

我见过很多这些函数的例子,有些只有一个、两个甚至没有参数。举个例子:

db.executeSql(
    'SELECT count(*) AS mycount FROM mytable;",
    [],
    function(dx, resultSet) {
        // resultSet.rows.item(0).mycount
    },
    function(dx, err) {
        // err.message
    }
);

在成功和失败回调函数中,dx 被假定为数据库连接的句柄。但我看到的例子忽略了这一点,分别只通过resultSeterr。换句话说:

function(resultSet) {

function(err) {

以及一些没有参数发送到成功回调的示例。

为这些函数指定参数的正确方法是什么?

【问题讨论】:

  • 我猜所有的方法都是正确的。你应该检查一下文档。

标签: javascript sqlite function parameters callback


【解决方案1】:

抱歉,经过仔细寻找似乎很长一段时间后,我得出的结论是,当查询包含在事务中时,回调函数只有一个附加参数。

所以对于查询,你可以这样做:

db.executeSql(
    'SELECT count(*) AS mycount FROM mytable;",
    [],
    function(resultSet) {
        // resultSet.rows.item(0).mycount
    },
    function(err) {
        // err.message
    }
);

但如果你使用的是交易方式,那就是这样:

db.transaction(function(tx) {
    db.executeSql(
        'SELECT count(*) AS mycount FROM mytable;",
        [],
        function(tx, resultSet) {
            // resultSet.rows.item(0).mycount
        },
        function(tx, err) {
            // err.message
        }
    );
});

我无法在任何文档或任何示例中找到对此的解释,但是当您查看使用事务的任何示例时,它们总是在回调函数中有额外的参数,所以我我只是假设这是正确的用法。

有什么想法吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多