주위에는 많은 제어 흐름 라이브러리가 있습니다. 저는 이전 프로젝트에서 Q를 사용했습니다. 불만은 없지만 다음 프로젝트에서 caolan으로 비동기 라이브러리를 사용할 것입니다.
위에서 설명한 것과
https://github.com/caolan/async
, 당신은 아마
이 https://github.com/caolan/async#parallel
는 당신이 설명하는 문제는 아주 쉽게 병렬로 전송할 수 있습니다 병렬 기능을 사용하여보고 싶어 문서의 예
EDIT : API 호출이 종속적 인 문제에 대해 놓친 것 같습니다. 체인을 따라 값을 전달하고 순서를 제어해야 할 때마다 waterfall 메서드를 사용해야합니다 (qiao의 대답 참조). 호출이 독립적 인 경우 병렬 처리 방법을 사용합니다. 병렬 메소드의 예는 다음과 같습니다.
async.parallel({
google: function(callback){
http.get("http://www.google.com", function(res){
console.log("google done");
callback(null, res.statusCode);
})
},
yahoo: function(callback){
http.get("http://www.yahoo.com", function(res){
console.log("yahoo done");
callback(null, res.statusCode);
})
}
},
function(err, results) {
if(!err){
console.log("all done");
console.log(results.google);
console.log(results.yahoo);
}else{
console.log(err);
}
}
);
이것은 모든 요청을 병렬 처리하고 모두 완료 될 때 콜백을 제공합니다. 이것은 데이터를 마사지하는 곳입니다. 제어 흐름 라이브러리의
목록 :
https://github.com/joyent/node/wiki/Modules#wiki-async-flow
이 그냥 일반적인 비동기 프로그래밍 질문입니다. 나는 그것 (섬유, 비동기 라이브러리, 이벤트 핸들링)을 다루는 방법이 많이 있기 때문에 stackoverflow에 잘 맞지 않는다고 생각한다.당신은 맹목적으로 명명되었지만 매우 유용한 Q 라이브러리와 함께 약속을 사용해야 만합니다. 이것은 의견이 분명한 답변이므로 주석으로 남겨 두겠습니다. 이 질문이 지금 당장 닫히기를 바랍니다. –
@AndyRay 질문을 닫을 수없는 것은 좋은 일입니다. – Tomalak
@AndyRay 일반적인 질문을하는 것에 대한 규칙은 없습니다. 노드를 올바르게 만드는 방법을 배울 때 가장 좋은 도구를 찾고 있습니다. 답을 얻은 경우 하나만 남겨 두십시오. 제공 한 솔루션에 대해 자세히 알아보고 기꺼이 받아 볼 수 있습니다. 질문에 대한 답변을 이미 알고 있기 때문에이 전체 사이트의 목적을 능가합니다. –