2016-12-05 13 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

匿名関数は非同期に実行され(「行」イベントが発生するたびに)、 'console.log'はすぐに実行されるため、その時点では' x'は常に空になります。何らかのコールバックが必要です。 –

答えて

0

あなたがしようとしていることを行う方法はありません。 Javascriptは、行単位で実行する点で同期言語です。この行は

console.log(x) 

すぐに実行されます。 "on"関数は呼び出されたときにのみ実行されるため、ログステートメントは常に空の値を持ちます。

Link to good article explaining JS environment

関連する問題