0

我试图从数组中的数据库返回列值,但它总是返回空数组。

function Select(query, db) {
var result = new Array();
db.transaction(function(tx) {
    tx.executeSql(query, [], function(tx, rs) {
        var len = rs.rows.length;

        for (var i = 0; i < len; i++) {
            var row = rs.rows.item(i);
            result.push({latitude : row['latitude']});
        }
    });

});
return result;
}

我确信该数组是在 for 循环之后创建的,但最后返回空。

4

2 回答 2

4

您正在使用异步函数。所以,直接退货是行不通的。您需要使用回调。

function Select(query, db, callback) {
    var result = new Array();
    db.transaction(function(tx) {
        tx.executeSql(query, [], function(tx, rs) {
            var len = rs.rows.length;
            for (var i = 0; i < len; i++) {
                var row = rs.rows.item(i);
                result.push({latitude : row['latitude']});
            }
            callback(result);
        });
    });
}

Select(function(result) {
    // do something with the result
})
于 2013-08-26T12:23:12.340 回答
0

根据您的描述,听起来像是tx.executeSql异步的。在这种情况下,您的Select方法应该返回一个Promise(也称为 Future),或者将结果推送回调用者。

于 2013-08-26T12:23:03.467 回答