繁体   English   中英

使用JavaScript WebSQL从函数中取出sqlresultset

[英]Take out sqlresultset from a function using javascript websql

我的项目中有此功能。 它应该返回选择请求的结果,但不能执行! jResult从事务功能中清空。 在第一个console.log中,可以,我可以检查内容,但最后它是空的! 因此,我无法返回查询结果。

有人知道是什么问题吗? 是否有更好的方法从此函数返回sqlresultset?

谢谢

function getHistoryList() { 
    var jResult=[];
    db.transaction( 
    function(transaction) { 
    transaction.executeSql( 'SELECT * FROM HISTORY;',[], 
                            function (transaction, result) { 
                            console.log("Query Success");
                            for (var i=0; i < result.rows.length; i++) { 
                                jResult.push(result.rows.item(i));
                                } 
console.log(jResult);
                            },
                            function (transaction, error) {
                                console.log("Query Error: " + error.message); 
                                }
                            ); 
                        },

    function (error) {
        console.log("Transaction Error: " + error.message);
    },
    function () {
        console.log("Transaction Success");
    } 
    ); 


console.log(jResult);
return jResult;  //  -> [] always
}

函数transaction()和executeSql()是异步的 这意味着可以在执行sql事务之前执行这些功能之后的代码。

这就是为什么这些函数采用参数回调函数的原因。 当异步函数完成其工作时,将执行这些函数。

第一个console.log起作用的原因是它是在回调函数中执行的:在执行sql请求之后。

因此,如果要利用请求的结果,则必须在传递异步函数参数的回调函数中执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM