0
queue[]
에서 자식 프로세스를 각각 wget
개로 분리 한 다운로드 관리자가 있습니다.node.js에있는 여러 자식 프로세스 처리
그러나 다운로드가 완료되고 콜백이 호출 된 후 queue[i]
을 처리해야하지만 어떤 큐 인덱스인지는 알 수 없습니다. 프로세스가 완료되면
const EXEC_FILE = require('child_process').execFile; /** https://nodejs.org/api/child_process.html */
queue = []; /** array with download urls */
function startDownload(i){
var downloadProccess = EXEC_FILE(
wget, [ queue[i] ],
(error, stdout, stderr) => {
/** callback after EXEC_FILE completed or aborted */
/** HERE! How do I get the index i? */
});
}
startDownload(1);
startDownload(3);
startDownload(9);
은 어떻게 i
값을받을 수 있나요?
경고 : Node.js 멀티 스레딩은 이와 같이 사용되지 않습니다. 작업을 위해 비동기 다운로드가 더 효율적입니다. foreach 루프에서 다운로드하기 위해 '요청'모듈을 사용해보십시오. 좀 더 견고하기 위해서는 bluebird 모듈과 함께 request-promise를 사용할 수 있습니다. 이 링크는 도움이 될 것입니다, 루프에서 그것을 시도하십시오 : http://stackoverflow.com/a/11944984/3359432 –
@ NidhinDavid 나는이 접근 방식으로 잘못된 것을 찾을 수없는 것 같습니다 : 무거운 작업을 메인 프로세스에서 오프로드하기 . 제가 누락 된 부분을 어떻게 사용해야하는지 조금 설명해 주시겠습니까? –
@ code-jaff Node.js의 멀티 스레딩은 다른 프로그래밍 언어와 다릅니다. 당신이 다중 스레드를 할 때 실제로 Node.js 프로세스의 새로운 인스턴스를 생성합니다. 메시지 전달을 사용하여 둘 사이에서만 통신 할 수 있습니다. 그리고 Node.js에 관한 한 IO 관련 작업은 많지 않습니다. Node.js는 이런 종류의 작업을위한 것입니다. 그것이 이미지 처리라면 나는 당신과 동의 할 것이다. 그렇더라도 최선의 선택은 오프로드가 아닌 C++로 'addon'을 만드는 것이다. 더 많은 통제력을 제공합니다. –