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