【问题标题】:Cant make async work with http in nodejs无法在 nodejs 中使用 http 进行异步工作
【发布时间】:2015-07-04 08:12:32
【问题描述】:

我在 nodejs 中使用 async 和 http 时遇到了一个非常奇怪的问题。这是我的代码:

http = require('http');
bl = require('bl');
async = require('async');

var tasks = [];

var dataItems = [];

var callHttp = function(index, callback) {
  http.get(process.argv[index], function(response) {

      response.pipe(bl(function(err, data) {
        if (err)
          return console.log(err);
        dataItems[index] = data.toString();
      }));

      response.on('end', callback);

    })
    .on('error', console.error);
}

var indices = [2, 3, 4, 5];
indices.forEach(function(item) {
  tasks.push(function(callback) {
    callHttp(item, callback);
  });
});



async.parallel(tasks, function(Err) {
  console.log(dataItems);
});

使用上面的代码运行

node async-http.js 'http://www.google.com/' 'http://academics.vit.ac.in/' 'http://www.example.com' 

给我以下错误:

{ [Error: connect ECONNREFUSED]
  code: 'ECONNREFUSED',
  errno: 'ECONNREFUSED',
  syscall: 'connect' }

但是,以不同的形式运行相同的代码(通过手动定义数组“tasks”) 似乎工作正常......:

http = require('http');
bl = require('bl');
async = require('async');

var tasks = [];

var dataItems = [];

var callHttp = function(index, callback) {
  http.get(process.argv[index], function(response) {

      response.pipe(bl(function(err, data) {
        if (err)
          return console.log(err);
        dataItems[index] = data.toString();
      }));

      response.on('end', callback);

    })
    .on('error', console.error);
}



async.parallel([
  function(callback) {
    callHttp(2, callback);
  },
  function(callback) {
    callHttp(3, callback);
  },
  function(callback) {
    callHttp(4, callback);
  }], function(Err) {
  console.log(dataItems);
});

知道我做错了什么吗?我到处搜索,还没有找到答案

【问题讨论】:

    标签: node.js http asynchronous


    【解决方案1】:

    process.argv[5] 不存在。

    process.argv[5] 应该是第四个参数。 并且您只提供了 3 个过程参数。 并且您正在向undefined url 发出http 请求。 所以你的连接被拒绝了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-09
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 2011-07-02
      • 2017-05-11
      • 1970-01-01
      相关资源
      最近更新 更多