проблема с получением значений массива вне функции в JavaScript?

0

Я создал массив, который будет хранить динамические значения, поступающие из БД. Когда я печатаю массив внутри функции транзакции, он печатает. когда я пытался распечатать сторону, я не получил значения. Я объявил массив глобально. в чем проблема, мой код выглядит следующим образом:

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
    Добро пожаловать в мир асинхронных звонков.
Теги:
arrays

1 ответ

4
Лучший ответ

tx.executeSql - это асинхронная функция. alert работает внутри функции, так как это обратный вызов, и обработка асинхронизации завершена. alert после того, как функция запускается до завершения функции, таким образом, она undefined.

Решение: выполните работу внутри обратного вызова или вызовите другую функцию с массивом, переданным как параметр, и выполните там работу.

  • 0
    Можно ли написать tx.executeSql внутри другого tx.executeSql? Я хочу написать запрос для элементов массива. Как я могу это сделать ?
  • 0
    Вы можете написать другое execute в обратном вызове.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню