JavaScript从内部函数返回值

时间:2012-04-12 11:18:44

标签: javascript web-sql

我试图从内部函数中获取值。为什么域总是返回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;
        }
    });
}

1 个答案:

答案 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
}
相关问题