2012-02-03 10 views
2

ノードでプレイを開始しましたが、それでも全く新しいプレイヤーです。私は次のコードを持っています、私はxのどこから "結果"を返すことが可能ですか?コールバックの結果からvarを入力していますか?

function dbRequest(sql) { 
     var x; 
     var dbResults = client.query(sql,function(err,results,fields) { 
        if (err) { 
         throw err; 
        } 
         x = results; 
         client.end(); 
       }); 
       // I want x here to return what is in results. 
       return(x); 
} 

答えて

0

いいえ、少なくともあなたが試した方法ではありません。

おそらく、client.query()コールは、ノードに対する非同期要求を起動します。これはつまり、コード実行が即座に続行されるため、コールバックでいっぱいになる前にxという値を返します。例えば

もののようなものに対処するため、かなりとても便利な方法は、(あなたが結果を特定の物事をしたい場合は)自分自身を定義する必要があり、別のコールバックメソッドに渡すために、ある

function dbRequest(sql, cb) { 
    var dbResults = client.query(sql,function(err,results,fields) { 
       if (err) { 
        throw err; 
       } 
        if (typeof cb === 'function') { 
         cb(results); 
        } 

        client.end(); 
      }); 
} 

、その後

dbRequest('select * from foo', function(data) { 
    // do something with data 
}); 
のようにそれを呼び出します
関連する問題