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ループでダウンロードするための 'request'モジュールを試してください。より堅牢にするには、bluebirdモジュールと一緒にrequest-promiseを使用することができます。 このリンクは参考になるでしょう、ループでそれを試してください:http://stackoverflow.com/a/11944984/3359432 –
@ NidhinDavid私はこのアプローチに間違ったものを見つけることができないようです:メインプロセスから重い作業をオフロードする。私が何かを欠けている場合、どのように使用すべきかについて少し説明できますか? –
@ code-jaff Node.jsのマルチスレッドは他のプログラミング言語と似ていません。あなたがマルチスレッド化されたときに、Node.jsプロセスのspwanと完全なインスタンスが発生したときには、メッセージの受け渡しを使用して、それらの間でのみ通信することができます。そして、Node.jsに関する限り、IO関連のタスクは重くはありません。 Node.jsは、これらの種類のタスクのためのものです。それが画像処理なら、私はあなたに同意するだろう、そして最良の選択肢は、オフロードではなく、C + +で 'アドオン'を作成することです。それはより制御を与える。 –