2013-10-20 1 views
0

카테고리별로 제품을 검색하려고합니다. 먼저 병렬 처리를하고 싶습니다. 먼저 대기 조건을 작성하거나 이상적인 방법으로 작성할 수 없습니다. 부모 함수가 모든 제품이 데이터베이스에서 검색되었음을 알리는 콜백 메소드.Q 또는 Async를 사용하여 NodeJS의 병렬 호출 및 대기 조건

나는 모든 솔루션에 개방적이라고 생각합니다. 여기 비동기를 사용했지만 Q (https://github.com/kriskowal/q/wiki/Examples-Gallery)를 선호합니다. Mongoose 및 MongoDB 작업에서 훨씬 더 나은 선택 인 것 같습니다.

var temp = [] 
    Async.each([1,2,3,4,5,6,7,8,9...n], 
     function (item, callback) { 
      database.getProductsByTaxonomy(item, function (err, products) { 
       temp = new Object(); 

       temp.TaxonomyID = item; 
       temp.Products = products; 

       results.push(temp); 
       callback(err, products); 
      }); 
     }, 
     function (err) { 
      console.log(err); 
     }); 

     <<wait for all .each call completes>> 

     return temp; // or callback (err, temp); // or emit? 

모든 솔루션은 무엇입니까? 당신의 DB 오히려 약속보다 콜백을 사용하는 경우, 당신은 약속으로 바꿀하기 Q.ninvoke()를 사용할 수

return Qx.map(arr, function (item) { 
    return getPromiseFromDb(item).then(function(products) { 
     return { taxonmyId: item, products: products }; 
    }); 
}); 

:

답변

0

당신은 Q와 배열 작업을 단순화 내 Qx 라이브러리를 사용할 수 있습니다.

+0

괜찮 았지만 알아낼 수 없으므로 예제를 자세히 설명해 주시겠습니까? Q와 Qx에 대한 지식이 부족합니다. 간단한 작업 예제. –

+0

@NilayParikh : 이것은 간단한 작업 예제입니다. 어떤 부분을 이해하지 못하니? – SLaks