在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())
出現問題時行呼籲對功能已經檢查,即使它尚未發送的返回值。
這怎麼辦?它甚至有可能嗎?我意識到我可以不使用這個功能,並且在我需要時手動執行查詢,但是這最終會完全沒有組織和混亂。
我以前問過這個問題「Change a variable from outside it's scope」這是註明爲「Why is my variable unaltered after I modify it inside of a function? - Asynchronous code reference」一式二份,有關異步代碼這個問題的談判,而不是如何有一個函數返回從它的值,我無法弄清楚如何。
你必須有'回調(函數作爲參數)''中的功能get_all_channels_by_order'處理'result' – Rayon
著名DUP http://stackoverflow.com/questions/14220321/how-do-i從異步調用返回響應 – elclanrs
_從文檔中,_運行串聯函數的任務數組,每個函數都將結果傳遞給數組中的下一個。但是,如果任何任務將錯誤傳遞給自己的回調,則不執行下一個函數,並立即調用主回調並返回錯誤。 __waterfall(任務,[回調])__ – Rayon