javascript - 如何返回这个值?

标签 javascript jquery

我正在使用 phonegapjQueryjQuery mobile 构建移动应用程序。我想在我的应用程序中使用 SqLite 数据库来存储一些用户信息。 (我无法使用本地存储,我想对数据进行搜索/排序操作)

这是我正在编写的代码,

function getAccountInformation(){
    var accounts = {};
    db.transaction(function(transaction) {
        transaction.executeSql('SELECT * FROM account;', [], 
            function(transaction, result) { 
                if (result != null && result.rows != null) { 
                    for (var i = 0; i < result.rows.length; i++) {
                        var item={};
                        var row = result.rows.item(i); 
                        for(var prop in row){
                            item[prop]=row[prop]
                        }
                        accounts[i]=item;
                    }
                }
            },errorHandler
        );
    },errorHandler,nullHandler);
    console.log(JSON.stringify(accounts));
}

如果我将这个 console.log(JSON.stringify(accounts)); 放在 for 循环 的结束 } 之后,它会显示正确的输出。

但如果我把它放在现在的位置,{} 就会作为输出打印出来。

如何使 getAccountInformation() 函数将该 accounts 对象返回给我的其他函数?我将在其中使用 jQuery 呈现输出。

我想要做的是简单地通过wrting返回这个accounts对象 返回帐户;

最佳答案

因为 SqLite 函数是异步的,所以您不能只返回值。

我会让 getAccountInformation 接收回调,如下所示:

function getAccountInformation(callbackfn)
{
    db.transaction(function(transaction),
        .....,
        function (transaction, result)
        {
            if (result != null)
            {
               callbackfn(result);
            }
        });
}

通过这种方式,您将在执行数据库请求时调用您的函数。

关于javascript - 如何返回这个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157099/

相关文章:

javascript - 将 html canvas 二进制数据发送到 Google Photos API

javascript - 嵌套 getJSON 调用

jquery - 查找下一个元素,尽管该元素有其他父元素(但共同祖先)?

javascript - JQuery load() 无法识别 pre php 包含内容

jQuery addclass/remove Class 工作一次

javascript - jQuery UI 可拖动不会回到第一点

jquery - 如何在等待 AJAX 响应时加载图像?

javascript - 没有 eval() 就无法启动 Aurelia 应用程序

javascript - 点击按钮后如何重定向

javascript - ReactJS多输入问题setState和state