2012-04-12 111 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 
}