【发布时间】:2016-04-02 18:19:15
【问题描述】:
我正在学习回调,我写了这段代码:
var http = require('http');
var str = "";
var count = 2;
function jugglingAsync(callback){
http.get(process.argv[count], function(response){
response.on("data", function(data){
str+=data.toString();
})
response.on("end", function(){
console.log(str);
str = "";
count++;
if(count<5) callback();
})
})
}
jugglingAsync(jugglingAsync);
它应该收集 3 个作为命令行参数给出的 URL 地址。问题是 - 当第一个回调工作正常并打印出好的结果时,第二个给我一个错误:
if(count<5) callback();
^
TypeError: callback is not a function
at IncomingMessage.<anonymous> (/home/dzikichrzan/Gdrive/Programowanie/JavaScript/learnyounode/jugglingAsync.js:13:16)
at emitNone (events.js:73:20)
at IncomingMessage.emit (events.js:167:7)
at endReadableNT (_stream_readable.js:906:12)
at nextTickCallbackWith2Args (node.js:455:9)
at process._tickCallback (node.js:369:17)
为什么这个功能只能用一次?
【问题讨论】:
-
如果它说
callback不是一个函数,它说它是是什么意思?console.log它。 -
看起来你需要写
if (count<5) callback(callback); -
第一次将“回调”显示为“未定义”,然后在第二个“console.log”时崩溃。
-
@jcarpenter 成功了!感谢您的帮助!
标签: javascript node.js callback asynccallback