4

我正在尝试从内部函数中获取值。为什么域总是返回未定义?我认为这是因为 webSQL 是异步执行的。在我可以继续之前,我需要在程序中的这一点上获取 domain 的值。我认为这是一个关闭问题,但也许我的方法是错误的?

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;
        }
    });
}
4

1 回答 1

3

你说得对,查询是异步执行的,这里的 return 语句不起作用。相反,在查询的回调函数中,调用另一个将结果作为参数传递的函数,然后从那里继续您的程序。

编辑:我刚刚注意到你循环遍历结果,这意味着domain将被每一行连续覆盖,并且总是以最后一项的值结束。

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
}
于 2012-04-12T11:33:02.647 回答