[英]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.