【问题标题】:how to return a value from inner function that have a phonegap database SQLite query to the outer function如何从具有phonegap数据库SQLite查询的内部函数返回一个值到外部函数
【发布时间】:2013-06-27 10:10:06
【问题描述】:

这是我的代码

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));

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

【问题讨论】:

  • 有什么错误吗?检查错误日志。
  • 没有错误。它只是打印未定义并继续
  • 你可以把你的 hasSubAcc 代码放在一个函数中,然后从 executeSQL() 回调中调用它

标签: javascript jquery html cordova android-sqlite


【解决方案1】:

问题很明显,因为您在函数中使用繁重的进程(即数据库),所以 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    • 2023-02-23
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多