我开始学习node.js,并在一个RSS中汇总多个RSS Feed,我正在研究这些Feed,然后从我想要的数据中重新创建一个唯一的Feed。
因此,为了异步处理多个http请求,我使用https://github.com/caolan/async#forEach来完成工作。
但我无法弄清楚如何返回一个值(在我的情况下是rss xml feed)。
这是我的代码:
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 feed,所以我觉得我错过了一些明显的东西。
如何返回rssFeed
值?
让我重新坐下来的一些帮助会很棒,谢谢!
济
答案 0 :(得分:8)
您无法从异步功能返回值。您需要将其传递给回调函数。像这样:
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
});