0

我正在尝试编写一个函数来确定 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;

}

4

1 回答 1

0

根据您的评论和w3 page,查询正在异步进行。您的问题的解决方案实际上取决于您的 js 代码结构。

选项1:

移出tf函数(并var在前面添加一个)并完全删除它之前的返回和警报。当您的回调被调用时,它将更改 tf 的值,并且您的其余代码可以引用它是正常的。

选项 2:

根据这个SO question,您可以将您的调用(我假设在您的代码中的其他地方)从openDatabase更改openDatabaseSync为启用同步操作。

于 2011-10-04T21:32:29.853 回答