Node.JSには、MySQLデータベースに接続し、一連の行を取得して配列として返す関数があります。私の問題はasynchronous
コードです、私はasync
Node.JSモジュールを使用しています。非同期コールバック関数の値を返すNode.JS関数
これは、これまでのところ、私の機能は次のとおりです。
var async = require("async")
function get_all_channels_by_order(){
async.waterfall([
function(callback){
mysql_connection.connect()
mysql_connection.query("SELECT * FROM channels ORDER BY listorder ASC", function(err, result){
callback(null, result)
})
}
], function(err, result){
mysql_connection.end()
return result
})
//return ?? somehow, return the value from the MySQL query?
}
console.log(get_all_channels_by_order())
ラインは機能が既にそれはまだ送信されていなかったにもかかわらず、戻り値をチェックするためにコールするときに問題が表示されます。
どうすればいいですか?それも可能ですか?私はこの機能を使うことができず、必要なときに手動でクエリを実行することができないことに気づきましたが、それは完全に組織化されずに乱雑に終わることになります。
私はこれまでに 'Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference'の複製としてマークされた 'Change a variable from outside it's scope'という質問をしましたが、非同期コードについての質問ではなく、関数から値を返す方法ではなく、
あなたがに対処するためにget_all_channels_by_order'関数 'に' '(引数としての機能)コールバックを持っている必要があります' result' – Rayon
有名DUP http://stackoverflow.com/questions/14220321/how-do-i -return-from-as-asynchronous-call – elclanrs
_ドキュメントから、_それぞれの結果を配列の次のものに渡す一連の関数のタスク配列を実行します。ただし、いずれかのタスクが独自のコールバックにエラーを渡すと、次の関数は実行されず、メインコールバックがエラーとともにただちに呼び出されます。 __waterfall(タスク、[コールバック])__ – Rayon