我试图从内部函数中获取值。为什么域总是返回undefined?我认为这是因为webSQL以异步方式执行。 在我继续之前,我需要在程序中获取域的值。我认为这是一个封闭问题,但也许我的方法是错的?
var domain = selectDomain();
function selectDomain()
{
var sql,
i;
sql = "SELECT * FROM Domain";
database.open();
database.query(sql, [], function(tx, result)
{
for (i = 0; i < result.rows.length; i++)
{
var domain = result.rows.item(i);
return domain.Domain;
}
});
}
答案 0 :(得分:3)
你是对的,查询是异步执行的,这里的return语句不起作用。相反,在查询的回调函数中,调用另一个将结果作为参数传递的函数,并从那里继续您的程序。
编辑:我刚刚注意到您循环显示结果,这意味着domain
将被每一行连续覆盖,并且始终以最后一项的值结束。< / p>
var domain;
selectDomain();
function selectDomain() {
...
database.query(sql, [], function(tx, result)
{
for (i = 0; i < result.rows.length; i++)
{
handleResult(result.rows.item(i));
}
});
}
function handleResult(result) {
domain = result.Domain;
// Continue
}