1
У меня есть этот массив покоя API путей:Использование асинхронной с http.get, узел JS
var paths = ['path1','path2','path3'];
Я хочу, чтобы создать массив с результатами каждого пути. В этом случае я вместо того, чтобы использовать «http://www.google.com/index.html» вместо «пути»
exports.test = function(req, res){
var paths = ['path1','path2','path3'];
var resultArr = [];
async.each(paths, function(path, cb){
console.log('collecting data from: ' + path);
http.get('http://www.google.com/index.html', function(result){
resultArr.push(result);
console.log('Done collecting data from: ' + path);
cb();
});
}, function(){
console.log('Done collecting data from all paths');
res.status(200).send('hello');
});
};
Это журналы:
Starting server at 127.0.0.1:5000
collecting data from: path1
collecting data from: path2
collecting data from: path3
Done collecting data from: path2
Done collecting data from: path1
Done collecting data from: path3
Done collecting data from all paths
GET /test 304 128.752 ms - -
Он не ждет для вызова, чтобы закончить. Я хочу получить результаты последовательно, один за другим. Что я делаю не так?
Вы код ведут себя правильно, что вы ожидали здесь должно произойти? – Cyrbil
«Обратите внимание, что, поскольку эта функция применяет итератор к каждому элементу параллельно, нет гарантии, что функции итератора будут завершены по порядку». - https://www.npmjs.com/package/async#each – TAGraves