如何将具有phonegap数据库SQLite查询的内部函数的值返回到外部函数

时间:2013-06-27 10:10:07

标签: javascript jquery html5 cordova android-sqlite

这是我的代码

hasSubAcc = function(accPid) {
    $.mobile.eazydb.transaction(function(tx) {
        tx.executeSql('SELECT * FROM Account WHERE Account_Parent_ID="'+accPid+'"', [],
            function(tx, rs){
                if(rs.rows.length == 0) {
                    return false;
                } else {
                    return true;
                }
        });
    });
}

访问的方法
alert(hasSubAcc(accid));

此警报打印未定义。这段代码有什么问题。任何解决方案都是如此。谢谢。

1 个答案:

答案 0 :(得分:0)

问题非常明显,因为你在函数内部使用繁重的进程(即数据库),因此jquery在与主线程并行的单独线程中运行此函数,现在在这种情况下,你的值将始终未定义。

您可以在检查条件

后立即创建全局变量var hasSubAcc=-1;
if(rs.rows.length == 0) {
                    hasSubAcc=0;
                } else {
                    hasSubAcc=1;
                }

现在使用

延迟一小段时间
setTimeout(function(){
alert(hasSubAcc);

},500);

or

while(hasSubAcc==-1){
//do nothing
}
alert(hasSubAcc);