【问题标题】:Callback - error after 2nd callback回调 - 第二次回调后出错
【发布时间】: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&lt;5) callback(callback);
  • 第一次将“回调”显示为“未定义”,然后在第二个“console.log”时崩溃。
  • @jcarpenter 成功了!感谢您的帮助!

标签: javascript node.js callback asynccallback


【解决方案1】:

你正在调用 jugglingAsync

if(count

不带参数,期望有参数作为回调函数

【讨论】:

  • 对。所以第一次通过没问题,但是第二次有callbackundefined。
猜你喜欢
  • 1970-01-01
  • 2020-03-28
  • 2020-04-13
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 2013-07-19
  • 2013-11-17
相关资源
最近更新 更多