javascript - 在 Node.js 中使用异步模块的问题

标签 javascript node.js asynchronous

遇到问题,感谢任何帮助。

我正在尝试将所有异步函数收集在一起。 尝试过 async.parallel、async.each、gather-gm。没有什么能让最终的回调起作用。 这是更新后的代码(但尚未正常工作):

var calls = [];

async.each(parser.allHrefs,function (href,callback) {

    getHtml(href,function(err, add){
        console.log("Passing data: " + href);

        if(err){
            return callback(err);
        };

        if(add){
            calls.push(href);
        };

        return callback();
    });
}, function (err) {
    if(err){
        console.log('something went wrong');
    }else{
        console.log('finished');
    };
}); 

第一个函数:

function getHtml(link, callback) {    
  httpreq.get(link, function(err, res) {

    if(err) {            
      return callback(err);      
    }

    if(res.statusCode >= 300) {      
      return callback(null, false);       
    } else {
      //cut parsing code here...
      return callback(null, true);          
    }
  });
}

p.s.:我已经更新了代码几次。在此示例中,我尝试使用 async.parallel。问题是,即使我没有收到任何错误,我仍然无法使用“getLocations”功能。代码看起来比第一个版本好得多,但仍然无法正常工作。

最佳答案

您的 gethtml 函数中有几个问题需要修复。

确保您现在返回的任何地方都调用了回调,例如

return callback(err)  

当您想要传达错误或

return callback(null,  result) 

当您想要传达成功并返回结果时。切勿在未调用回调的情况下返回。

关于javascript - 在 Node.js 中使用异步模块的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29239889/

相关文章:

javascript - Google Drive API JavaScript - 插入文件

javascript - 在同一函数(NodeJs)中停止多个 setInterval

javascript - 用 Mongoose 保存图像

ios - "Request failed: unacceptable content-type: text/html"使用 AFNetworking 2.0

c# - 用于大量、低延迟 http 请求的异步与线程

javascript - 单击时在同一函数中包含可选类

javascript - 使用 defer 和 async 加载 JavaScript 文件

node.js - 分析我的 NodeJS 服务器显示它挂起......但是如何找出原因?

node.js - 如何通过 Websocket 发送文件以及附加信息?

javascript - Angular 2 fakeAsync 在使用 tick() 的函数中等待超时?