코드 병렬화와 관련하여 async
패키지의 동작을 이해하려고합니다. 내가 이해 한 바로는, 콜백 지옥/수프를 피하기 위해 코드를 구조화하는 것이 도움이되지만 그게 유일한 이점일까요? 위의 코드에서 async.parallel도 코드를 병렬 처리합니까?
async.parallel([
function(next) {
apiCallTo3rdParty(next);
},
function(next) {
apiCallTo3rdParty(next);
},
function(next) {
apiCallTo3rdParty(next);
}
], function(err, res) {
// do something else with returned data
});
은 세 가지 API 호출은 다른가 완료 될 때까지 기다리지 않고 할 것입니다. 사양대로. 나머지는 이전에 완료되었으므로 가장 긴 API 호출이 반환 된 후 최종 콜백이 호출됩니다. 내가 코드를 변경 한 경우 있도록
그러나,이 작업을 차단 몇 만든,
async.parallel([
function(next) {
sleep(5);
},
function(next) {
sleep(5);
},
function(next) {
sleep(5);
}
], function(err, res) {
// do something else with returned data
});
은 액면 "Node.js is Single Threaded" 촬영? 무슨 일이 일어날 것입니다, 우리는 의미로 받아하려는 async
블록 것이라고 15 초 후에 최종 콜백을 실행하지만 "Node.js가 자체 내부 스레드 풀을 유지한다는 것을 알면 Node는 자체 스레드에서 각 콜백을 실행하고 함수를 실제로 병렬 처리하며 5 초 후에 최종 콜백을 호출한다고 가정 할 수 있습니다 ?
"Node.js 자체 자체 스레드 풀"AFAIK를 유지합니다. 사실이 아닙니다. – SLaks
@SLaks 나는 믿는다. 그러나 주된 스레드가 아닌 스레드는 코드를 파싱하고 최적화하는 것만을 수행한다. –