节点异步和请求,异步不等待,请求永不发送

时间:2016-04-11 15:00:03

标签: node.js asynchronous

所以我完全难过,希望有人可以帮助Node JS Async和Request模块的组合。我正在尝试构建一个要下载的文件列表,我将其传递给Async,因为一个对象数组包含我需要下载和存储所述文件的所有信息。经过大量的调试后,我发现Request甚至没有解决问题,我无法弄清楚原因。

async.each(missingFiles,
    function (obj, cb) {

        console.log(obj.url);

        //var file = nfs.createWriteStream(obj.fullPath);
        request(obj.url, function (error, response, body) {
          if (!error && response.statusCode == 200) {
            console.log(response)
          }

         cb();
       })
   },
   function (err) {

        if (err) {
            console.log("Async failed");
        }
    }
);

1 个答案:

答案 0 :(得分:0)

之前我遇到过类似的问题。如果在异步块之外发送响应,http请求/响应周期将在异步任务完成之前结束。修复是在done()回调中发送响应。

app.post("/download", function(req, res) {
  async.eachSeries(missingFiles, function (obj, cb) {
    ...
    //do your work here
    cb()
  }, function done() {
     res.json({success: true});
  });
}