2012-10-29 4 views
5

나는 node.js를 배우기 시작했고 하나의 피드에 여러 RSS 피드를 집계하기 위해 피드를 fecting 한 다음 데이터에서 고유 피드를 다시 만듭니다.노드 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

비 동기화 기능에서 값을 반환 할 수 없습니다. 콜백 함수에 전달해야합니다. 좋아요 :

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' 안에서 호출 되었습니까? –