繁体   English   中英

嵌套回调中的nodejs套接字挂断错误

[英]nodejs socket hang up error in nested callback

我尝试在回调中放入许多回调,但是该程序将在返回多个成功请求后关闭,并显示“套接字挂起”错误。 我尝试从响应中收集数据并立即输出它们,有人可以告诉我哪一部分出了问题...顺便说一下,我隐藏了请求方法的详细信息,我保证请求方法可用于http调用。

http.request(options1,function(data){
    var condition=data.length;
    var result=[];
    data.foreach(item,function(data){
        http.request(options2, function(data){
             if(data) result.push(data);
             condition--;
             if(condition<=0) console.log(result);
        }
    });
});

为我的http.request方法

var request=function(options,callback){
    http.request(options,function(res){
        var body;

        res.on('data',function(chunk){
             body+=chunk;
        });
        res.on('end',function(){
             callback(JSON.parse(body));
        });

    request.end();
};

那不是http.request()的正确用法。

  • http.request()回调传递了IncomingMessage对象,而不是缓冲的响应数据。

    • 编辑:您的自定义request()应该看起来像这样,尽管您也应该处理错误。 注意request.end()的正确位置并初始化var body = ''

       function request(options, callback) { http.request(options,function(res) { var body = ''; res.setEncoding('utf8'); res.on('data',function(chunk) { body += chunk; }).on('end',function() { callback(JSON.parse(body)); }); }).end(); } 
  • 您缺少请求的.end() ,因此node.js知道您已经准备好实际发送HTTP请求: http.request(..., ....).end(); 这是造成您特定错误的原因...服务器挂断了连接,因为在打开TCP连接后,它厌倦了等待您的请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM