我正在使用 phonegap
、jQuery
和 jQuery mobile
构建移动应用程序。我想在我的应用程序中使用 SqLite
数据库来存储一些用户信息。 (我无法使用本地存储
,我想对数据进行搜索/排序操作)
这是我正在编写的代码,
function getAccountInformation(){
var accounts = {};
db.transaction(function(transaction) {
transaction.executeSql('SELECT * FROM account;', [],
function(transaction, result) {
if (result != null && result.rows != null) {
for (var i = 0; i < result.rows.length; i++) {
var item={};
var row = result.rows.item(i);
for(var prop in row){
item[prop]=row[prop]
}
accounts[i]=item;
}
}
},errorHandler
);
},errorHandler,nullHandler);
console.log(JSON.stringify(accounts));
}
如果我将这个 console.log(JSON.stringify(accounts));
放在 for 循环
的结束 }
之后,它会显示正确的输出。
但如果我把它放在现在的位置,{}
就会作为输出打印出来。
如何使 getAccountInformation()
函数将该 accounts
对象返回给我的其他函数?我将在其中使用 jQuery
呈现输出。
我想要做的是简单地通过wrting返回这个accounts
对象
返回帐户;
最佳答案
因为 SqLite 函数是异步的,所以您不能只返回值。
我会让 getAccountInformation 接收回调,如下所示:
function getAccountInformation(callbackfn)
{
db.transaction(function(transaction),
.....,
function (transaction, result)
{
if (result != null)
{
callbackfn(result);
}
});
}
通过这种方式,您将在执行数据库请求时调用您的函数。
关于javascript - 如何返回这个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157099/