Web SQL事务在javascript函数中无法正常执行
作者:互联网
我有JavaScript函数,从我的本地数据库返回选定值的数组.
var dataBase = {
select : selectFunction
}
var db = openDatabase(..);
var data=[ ];
function selectFunction() {
db.transaction(function (t) {
t.executeSql("SELECT * FROM Table", [], function (t, results) {
for (i = 0; i < results.rows.length; i++) {
data.push(results.rows.item(i));
}
});
});
return data;//return "stackoverflow" //works fine
}
我想做这样的事情
var getSelect = dataBase.select();
alert(getSelect);
如果我返回像“stackoverflow”这样的字符串,这将正常工作
alert result: stackoverflow
但是如果我尝试返回’data’,函数将返回undefined
我注意到db.transaction在return语句之后执行,我不知道如何解决这个问题.
解决方法:
从异步函数返回结果时,必须使用回调函数,因为函数将在实际操作完成之前返回.您可以像这样重写您的函数:
function selectFunction(callback) {
db.transaction(function (t) {
t.executeSql("SELECT * FROM Table", [], function (t, results) {
for (i = 0; i < results.rows.length; i++) {
data.push(results.rows.item(i));
}
callback(data);
});
});
}
然后调用它,传递一个回调:
dataBase.select(function(data){
var getSelect = data
alert(getSelect);
});
标签:javascript,function,sql,web-sql 来源: https://codeday.me/bug/20190624/1281197.html