5

我开始学习 node.js,并将多个 rss 提要聚合到一个中,我正在获取提要,然后从我获取的数据中重新创建一个唯一的提要。

因此,为了异步处理多个 http 请求,我使用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值?

一些帮助让我回到座位上会很棒,谢谢!

泽维尔

4

1 回答 1

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
});
于 2012-10-29T22:43:34.323 回答