使用JavaScript的SQLite,创建返回行数的函数

时间:2014-12-17 14:27:27

标签: javascript sqlite cordova

我正在尝试创建一个函数,该函数使用带有Apache Cordova 2.9.0 API的JavaScript在SQLite数据库中返回表中的行数。我遇到以下问题,函数返回后执行回调... 以下是代码:http://pastebin.com/eFin9yyJ

警报"全球性的"弹出早于" temp" +计数器

我尝试使用一些超时但奇怪的事情发生了,我卡住了

1 个答案:

答案 0 :(得分:0)

您可能需要的是将函数作为参数使用回调函数,当值准备就绪时(DB已将其返回),该函数将使用值调用。例如:

var cb = function(value) {
    alert("Got value: " + value);
}

function getNumberOfRecords(name, callback) {
        var temp = 0;
        db.transaction(querySelect, onError);
        function querySelect(tx) {
            //results.rows.length
            tx.executeSql("SELECT count(*) as counter from "+name, [], function (tx, results) {
                        alert(results.rows.item(0).counter);
                        temp = results.rows.item(0).counter;
                        alert("temp = "+ temp);
                        callback(temp);
                    },
                    function (error) {
                        console.log("Cannot read dat data!" + error.message + " z " + name);
                    });
        }
}

getNumberOfRecords("as", cb);

在这个例子中,我们首先声明一个名为cb的函数,它接受一个参数(从数据库中获取的值)。它作为参数传递给getNumberOfRecords,它再次连接到数据库并为数据库提供一个回调函数,该函数位于代码匿名函数中:

function (tx, results)

数据库调用此函数,当找到数据时,然后调用初始cb函数,该函数作为上层函数的参数回调给出,其中包含从数据库中获取的值。

如果你不熟悉回调和异步编程,请告诉我,这样我可以改进我的答案,使其更容易理解。