从sqlite数据库获取值并插入到数组中

时间:2013-10-21 12:24:21

标签: javascript sqlite asynchronous cordova

我已经创建了一个函数myFunction,它执行简单的任务,即从sqlite数据库中检索数据并将其保存在一个可以轻松使用的数组中。此功能应遵循以下步骤来实现我的功能。

  1. 从数据库中检索数据。
  2. 将其保存到阵列中。
  3. 返回数组
  4. 但它正在这个序列中执行这些步骤; 3,1,2,所以我没有得到数据,因为它没有得到它就返回。

    e.g。

    function myFunction() {
        var ret;
        var arr = [];
    
        db.transaction(function (trans) {
            trans.executeSql('SELECT * FROM tblname', [],
                function (transaction, result) {
                    if (result != null && result.rows != null) {
                        for (var i = 0; i < result.rows.length; i++) {
                            var row = result.rows.item(i);
                            ret = row.urlcolmn;
                            arr.push(ret);
    
                            alert('alert 1'); // just to check which line(alert) is called first
                        }
                    }
                }, errorHandler);
        }, errorHandler, nullHandler);
    
        alert('alert 2'); // just to check which line(alert) is called first
    
        return arr;
    }
    

    在上面的代码中,警报2显示在警报1之前.....这就是为什么它不返回数组中的值。这个问题可能是因为JS中的sqlite是异步的。

0 个答案:

没有答案