在节点js中的async.forEach中返回值?

我开始学习node.js,并聚合多个RSS饲料在一个单一的饲料,然后重新从我怀疑的数据重新创build一个独特的饲料。

所以,为了处理多个http请求asynchronous我使用https://github.com/caolan/async#forEach这个工作。

但我不知道如何返回一个值(rss xml饲料在我的情况)。

这是我的代码:

function aggregate(topic) { async.forEach(topic.feeds, function(item, callback) { parseAndProcessFeed(item, callback); }, function(err) { // sort items by date items.sort(function(a, b) { return (Date.parse(b.date) - Date.parse(a.name)); }); var rssFeed = createAggregatedFeed(); console.log(rssFeed); return rssFeed; } ); } 

console.log(rssFeed)我可以看到RSS饲料,所以我觉得我失去了一些明显的东西。

我怎样才能返回rssFeed值?

有些帮助让我回到座位上会很好,谢谢!

泽维尔

你不能从exception函数返回值。 你需要把它传递给callback函数。 喜欢这个:

 function aggregate(topic, callback) { async.forEach(topic.feeds, function(item, callback) { parseAndProcessFeed(item, callback); }, function(err) { // sort items by date items.sort(function(a, b) { return (Date.parse(b.date) - Date.parse(a.name)); }); var rssFeed = createAggregatedFeed(); callback(err, rssFeed); } ); } aggregate(someTopic, function(err, result) { // here is result of aggregate });