有人可以幫我理解我的解決方案爲什麼不起作用嗎?看起來回調函數在juggle函數完成之前正在運行。回撥首先運行? - learnyounode玩雜耍
我的代碼工作正常,如果我刪除評論。這只是我不明白爲什麼日誌功能沒有在玩轉功能結束後被調用。這就是回調應該如何正確工作?
感謝提前:)
var http = require('http')
links = process.argv.slice(2)
var contents = []
//var cbacks = 0
function juggle(callback) {
links.forEach(function(link, i, links) {
http.get(link, function(response) {
response.setEncoding("utf8")
var str = ""
response.on("data", function(data) {
str = str.concat(data)
})
response.on("end", function(){
contents[i] = str
//cbacks++
//if(cbacks === 3) {
// callback()
//}
})
})
})
callback()
}
function log() {
contents.forEach(function(content, i, contents) {
console.log(contents[i])
})
}
juggle(log)
'callback'函數在'http.get'的回調之前運行 - 因爲'http.get'是一個異步調用。 – tymeJV
啊,非常感謝!不敢相信我沒有想到這一點。 – tushar