我创建了一个数组,用于存储来自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
}
有什么建议吗?
答案 0 :(得分:4)
tx.executeSql
是一个异步函数。 alert
在函数内工作,因为它是回调,异步处理已完成。在函数完成之前触发函数后的alert
,因此为undefined
。
解决方案:在回调中进行工作或调用另一个函数,并将数组作为参数传递并在那里进行工作。