簡體   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