Ваш код правильный.Он выполняется асинхронно параллельно.
Однако вы не уверены, что вывод выводится в последовательности (или выглядит как последовательность), но это нормально, независимо от того, параллельный или синхронный, вывод (как он закодирован, будетпечатается один за другим, возможно, не в том же порядке).
, если вы хотите вывести все сразу, когда закончите, выполните что-то вроде следующего:
var request = require('request');
var finished = new Array(10);
var numFinished = 0;
var fun = function(i) {
request('http://myapp' + i + '.com', function(error, response, body) {
finished[i] = response && response.statusCode ? response.statusCode : 'No response';
numFinished++;
});
};
for (i = 0; i < 10; i++) {
fun(i);
}
var timer = setTinterval(function(){
if ( 10 <= numFinished )
{
clearInterval(timer);
console.log(finished.join(',')); // print all at once
}
}, 500);
Или если вы используете обещанияВы можете сделать:
var request = require('request');
var fun = function(myapp) {
return new Promise(function(resolve, reject) {
request('http://' + myapp + '.com', function(error, response, body) {
resolve(response && response.statusCode ? response.statusCode : 'No response');
});
});
};
var promises = new Array(10);
for (i = 0; i < 10; i++) {
promises[i] = fun('myapp' + i);
Promise.all(promises).then(function(results){
console.log(results.join(',')); // print all at once
});