在javascript中获取函数外部的数组值的问题?

时间:2014-04-21 13:03:18

标签: javascript jquery arrays

我创建了一个数组,用于存储来自DB的动态值。当我在交易功能中打印数组时,它正在打印。当我试图打印出来时,我没有得到这些值。我已经全局声明了这个数组。有什么问题,我的代码如下;

function sendCategoryDetails() {

    var selected_category = $('#select-choice :selected').val();
    alert("control : " + selected_category);
    var mycoodinatesDetails;
    var myLocation = new Array();
    var db = window.sqlitePlugin.openDatabase({name: "MYDB"});

    db.transaction(function (tx) {
        tx.executeSql("select Location from Locationlog WHERE Category = '"+selected_category+"';", [], 
            function (tx, res) {
                for (var i = 0; i < res.rows.length; i++) {
                    myLocation[i] = res.rows.item(i).Location;
                }
                alert (myLocation +" length : "+ myLocation.length); // Values are printing 
            });
    });
    alert (myLocation +" length : "+ myLocation.length); // values are not getting, It showing the length is 0
}

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

tx.executeSql是一个异步函数。 alert在函数内工作,因为它是回调,异步处理已完成。在函数完成之前触发函数后的alert,因此为undefined

解决方案:在回调中进行工作或调用另一个函数,并将数组作为参数传递并在那里进行工作。