我目前正在瀏覽關於Javascript的nodeschool.io教程。這是來自其中一個解決方案的示例代碼。在javascript函數中異步與同步。 (Node.js)
module.exports = function (dir, filterStr, callback) {
fs.readdir(dir, function (err, list) {
if (err)
return callback(err)
list = list.filter(function (file) {
return path.extname(file) === '.' + filterStr
})
callback(null, list)
})
}
據我所知,javascript是一種同步語言。但是,node.js使用異步函數。在這段代碼中,回調在if語句之前是不可能發生的。因此,有即使任何理由具有功能是從格式不同
function(params, callback){
// one line data manipulation
callback();
}
我不確定你在問什麼。 你能澄清一下你的意思嗎?在if語句之前回調不可能發生。「? – brianjob 2015-04-05 01:14:12
我通常使用java和C++等語言編程。在這些語言中,函數總是從上到下運行,除非您專門告訴他們。然而,node.js是異步的。據我所知,這些功能並不是從上到下運行。我在說有沒有可能,「如果(錯誤)返回...「開始運行,但」回調(null,list)「首先完成 – bigyellowduck 2015-04-05 01:20:52
如果有錯誤(即'err'是一個真值),則執行'callback(err)'並且函數返回''callback(null,list)''在這種情況下永遠不會被調用。至於你的第二段代碼,如果一行數據操作需要一些處理時間,這種情況可能是有意義的,在這種情況下,你不想停止整個程序在等待它完成時 – JCOC611 2015-04-05 01:27:56