Node.js 节点异步和请求,异步不等待,请求从不发送

Node.js 节点异步和请求,异步不等待,请求从不发送,node.js,asynchronous,Node.js,Asynchronous,因此,我完全被难住了,希望有人能帮助我将NodeJSAsync和请求模块结合起来。我正试图构建一个要下载的文件列表,并将其传递给Async,因为一个对象数组包含我下载和存储所述文件所需的所有信息。经过大量的调试,我发现这个请求甚至都没有解决,我也不知道为什么 async.each(missingFiles, function (obj, cb) { console.log(obj.url); //var file = nfs.createWriteSt

因此,我完全被难住了,希望有人能帮助我将NodeJSAsync和请求模块结合起来。我正试图构建一个要下载的文件列表,并将其传递给Async,因为一个对象数组包含我下载和存储所述文件所需的所有信息。经过大量的调试,我发现这个请求甚至都没有解决,我也不知道为什么

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");
        }
    }
);

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

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

好吧,那么。。。是什么让它进入你的控制台?为什么没有发送请求?如果没有更多的信息,这个问题是离题的。obj.url(我想请求的项目正在进入屏幕),但之后什么也没有,它只是转到下一个obj.url。如果我更改代码以删除If语句,那么我只需打印任何和所有响应,就会得到相同的效果。此块是否在http请求处理程序中?如果是,请确保在异步任务之后返回响应complete@AwakeningByte我正在按照Request()文档来做我能告诉你的事情,但似乎不需要。我尝试了上面的结构,现在只打印了系列URL中的第一个,仍然没有返回任何数据。