有人可以帮我理解我的解决方案为什么不起作用吗?看起来回调函数在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