0
我遇到了在nodejs中使用異步和http的非常奇怪的問題。這裏是我的代碼:無法在nodejs中使用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' }
但是,運行在不同的形式相同的代碼(通過手動定義陣列'任務') 似乎正常工作...:
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);
});
任何想法我可能做錯了什麼?我到處搜索,發現沒有答案