Я пытаюсь получить ответ, полученный от сервера, в том же порядке, что и URL-адреса передавались как аргументы командной строки. Но он не выполняет синхронизацию, пожалуйста, помогите. Я относительно новичок в javascript и узле. пожалуйста найти мой код ниже:Выполнение синхронизации Получить запрос с использованием Node.js
var http = require('http');
var bl = require('bl');
var fs = require('fs');
var q = [];
var count = 0;
q[0] = getRequest(process.argv[2]);
q[1] = getRequest(process.argv[3]);
q[2] = getRequest(process.argv[4]);
function getRequest(url) {
var val;
http.get(url,function (res) {
res.on('end', function() {
count++;
}),
res.pipe(bl(function (error, data) {
val = data.toString();
if (error) {
console.log(error);
}
else {
console.log(val);
}
}))
}).on('error', function (e) {
console.log("Got error: " + e.message);
});
return val;
}
if (count == 3) {
for (var i = 0; i < q.length; i++) {
console.log[q[i]];
}
}
как только вы знакомы с async Node.js: http://stackoverflow.com/questions/16336367/what-is-the-difference-between-synchronous-and-asynchronous-programming-in-node, вы можете использовать https : //github.com/caolan/async, чтобы сделать код более понятным и понятным. – TheBronx
Я бы попробовал рекурсивный подход здесь: http://stackoverflow.com/a/6048595/2063246 (он отлично работал для меня!) – Halogen