それで、定期的に関数を再帰的に呼び出すための(スタックの成長とパフォーマンスの観点から)より良い方法は何でしょうか?たとえば、200ミリ秒ごとにファイルの内容を読み取りたいとします。私は次の2つの方法を持っていますが、それらが何か違うのだろうかと思っていましたか?
方法1:process.nextTickなしでプレーンolssetTimeoutを使用する
var fs = require('fs');
(function loop() {
// Print to time to indicate something is happening
console.log(new Date().toString());
// Read a 51MB file
fs.readFile('./testfile', function (err, data) {
if (err) console.log(err);
});
// Call the same function again
setTimeout(function () {
loop();
}, 200);
})();
方法2:setTimeout内でprocess.nextTickを呼び出す
var fs = require('fs');
(function loop() {
// Print to time to indicate something is happening
console.log(new Date().toString());
// Read a 51MB file
fs.readFile('./testfile', function (err, data) {
if (err) console.log(err);
});
// Call the same function again
setTimeout(function () {
process.nextTick(function () {
loop();
});
}, 200);
})();
私が知りたいのは、setTimeout内にprocess.nextTickを追加することが役立つかどうかということです。process.nextTick内で関数を呼び出すと、スタックの使用が軽減されますか?