下面是我的代码,我想返回Result Set
并在我的代码中的任何位置使用它。最后一行还打印了' 0'但我希望该值包含Result Set
中的行数。
我该怎么做?
var querySql = function(sql, callback) {
var tab = [];
db.transaction(function(tx) {
tx.executeSql(sql,[],function(tx, results){
for(i = 0; i < results.rows.length; i++){
tab.push(results.rows);
}
callback(tab);
});
});
}
var queryLength = 0;
querySql('SELECT * FROM contacts', function(result) {
console.log("RESULTS: " + result.length);
queryLength = result.length;
console.log("QUERY_LENGTH: " + queryLength);
for(var i = 0; i < result.length; i++){
alert("ITEMS: " + result[i].item(i)['firstname']);
}
});
console.log("QUERY_LENGTH_1: " + queryLength);
答案 0 :(得分:0)
我相信您需要使用for
方法访问该项目的item()
循环,如下所示:
tx.executeSql(sql,[],function(tx, results){
for(i = 0; i < results.rows.length; i++){
tab.push(results.rows.item(i)); // <--------
}
callback(tab);
});
这应该用您的记录填充tab
。
此外,您的控制台声明需要在querySql
闭包内:
querySql('SELECT * FROM contacts', function(result) {
//...
console.log("QUERY_LENGTH_1: " + queryLength);
});
否则,在下一个事件循环执行事务之前,将首先评估 。