2017-03-15 5 views
2

node.jsの終了を妨げない「弱いコールバック」(「弱い参照」と同様に)を作成することは可能ですか?私は、node.jsプロセスがまだ実行されている場合に実行される長期実行の非同期タスクに対して「オプションのハンドラ」を定義できるようにしたいと考えていますが、イベントキューが自体。私はそのような構築のための実際の世界のユースケースを持っていない、私はちょうどnode.jsがそれをサポートしているのだろうか(それはネイティブの拡張が必要かもしれません)。Node.jsプロセスの終了を妨げない「弱いコールバック」を作成します

これは、/bin/sh -c "sleep 9 ; ls"を呼び出して終了するのを待っている、とてもシンプルなプログラムです。 node.jsプロセスは、基本的には子プロセスが終了するまで9秒間アイドル状態です。

var child_process = require("child_process"); 

child_process.exec("sleep 9 ; ls", function (err, stdout, stderr) { 
    console.log(stdout); 
}); 
console.log("end"); 

私は、プログラムが3秒以上生き続けることが保証されるように非弱コールバックを作成するためにsetTimeoutを使用していますこのような何かを書くことができるようにしたいと思います。 (注:このアプローチは、期限が事実の後に変更することを可能にする一方で、child_process.execは、タイムアウトオプションを持っているが、それは、事前に設定する必要があります)あなたはこのようunref機能を使用することができ、タイマーの場合

var child_process = require("child_process"); 

child_process.exec_weakly("sleep 9 ; ls", function (err, stdout, stderr) { 
    console.log(stdout); 
}); 
setTimeout(function() {}, 3000); // prevent exit for at least three seconds 

console.log("end"); 

答えて

1

:あなたはchild_process.spawnためdo the sameできるよう

let timer = setTimeout(() => { 
    console.log('tick'); 
}, 3000); 
timer.unref(); 

が見えます。

関連する問題