2016-12-05 91 views
0

我在嘗試將行添加到變量x時遇到問題。我還沒有理解如何從另一個函數調用的匿名函數中返回一個值。如何從嵌套在javascript(node.js)中的匿名函數返回值

var pgClient = new pg.Client(connectionString); 
pgClient.connect(); 
var query = pgClient.query("SELECT * from sceglie"); 

var x = []; 

query.on("row", function(row,result){ 
    result.addRow(row); 
    x.push(row); 
}); 

console.log(x); 
+1

你......不。這很簡單。 –

+0

@KevinB但有沒有解決方案來創建一個通用函數,如函數foo(query_string,DB_URL){},該函數返回此數據庫上的查詢結果? –

+0

匿名函數將異步運行(每次發生「row」事件時)和'console.log'將立即執行,所以在那個時候'x'將一直是空的。你需要某種回調。 –

回答

0

沒有辦法做你想做的事情。 Javascript是一種同步語言,它可以逐行執行。所以這一行:

console.log(x) 

會馬上執行。 「on」函數只有在被調用時纔會執行,所以你的日誌語句總是有空值。

Link to good article explaining JS environment