2012-04-12 115 views
4

我试图从内部函数中获取值。为什么域总是返回undefined?我认为这是因为webSQL异步执行。 在我可以继续之前,我需要在程序中的此处获取域的值。我认为这是一个关闭问题,但也许我的做法是错误的?从内部函数返回值的JavaScript

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

回答

3

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

编辑:我只注意到你遍历结果,这意味着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 
}