Таблица базы данных HTML5 - проверьте, если пусто - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь написать функцию, чтобы определить, пуста ли таблица html5 websql db.Код ниже.Я положил туда оповещения, чтобы увидеть, что происходит.Когда эта функция запускается, сначала появляется всплывающее предупреждение.Хотя таблица пуста, возвращаемое значение ложно.

function tableisempty() {
tf = false;
query = "SELECT * FROM OLL;";

localDB.transaction(function(transaction){
         transaction.executeSql(query, [], function(tx, results){

             if (results.rows.length == 0) { 
                  tf = true;
                  alert ("table has "+results.rows.length+" rows. returning "+tf);
                 }   else    {
                  tf = false;    
                  alert ("table is not empty. returning "+tf); 
                 }                               
         }, errorHandler);              
});

alert ("return value is " + tf);

return tf;

}

1 Ответ

0 голосов
/ 05 октября 2011

На основании вашего комментария и страницы w3 запрос выполняется асинхронно.Решение вашей проблемы действительно зависит от вашей структуры кода js.

Опция 1:

Переместите tf за пределы функции (и добавьте var впереди) и полностью удалите возврат и предупреждение прямо перед ним.Когда ваш обратный вызов будет вызван, он изменит значение tf, и остальная часть вашего кода может сослаться на него, это нормально.

Опция 2:

в соответствии с на этот ТАК вопрос, вы можете просто изменить свой вызов (в другом месте кода, я полагаю) с openDatabase на openDatabaseSync, чтобы включить синхронные операции.

...