2012-10-29 7 views
5

私はnode.jsを学び始めています。複数のRSSフィードを1つにまとめるには、フィードを切り取ってから、データから一意のフィードを作り直しています。ノードjsのasync.forEachの戻り値は?

したがって、複数のhttp要求を非同期に処理するために、私はhttps://github.com/caolan/async#forEachを使用してジョブを実行します。

しかし、値(私の場合はrss xmlフィード)を返す方法を理解できません。

は、ここに私のコードです:console.log(rssFeed)

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; 
    } 
); 
} 

私はRSSフィードを見ることができるので、私は、私は何かを明らかに不足していると思います。

rssFeedの値を返すにはどうすればよいですか?

私は座席に戻って私を得るためにいくつかの助けは素晴らしい、ありがとう!

Xavier

答えて

8

asyncronious関数から値を返すことはできません。コールバック関数に渡す必要があります。このように:

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 
}); 
+0

ありがとうございます! ここに私は行方不明だった明らかです! 私のRSSフィードが今すぐ機能します! –

+0

'items'はどこかで宣言され、' items.push(item) 'のようなことをする' parseAndProcessFeed'の中から呼び出されますか? –

関連する問題