Wywołanie działa rekurencyjnie w regularnych odstępach czasu
Zastanawiałem się, jaki jest lepszy sposób (pod względem wzrostu stosu i wydajności) na rekurencyjne wywoływanie funkcji w regularnych odstępach czasu? Na przykład, powiedzmy, że chcę czytać zawartość pliku co 200 ms. Mam następujące dwie metody i zastanawiałem się, czy są inne?
Metoda 1: Używanie zwykłych ols setTimeout bez 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 () {
loop();
}, 200);
})();
Metoda 2: Wywołanie process.nextTick wewnątrz setTimeout
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);
})();
Chcę wiedzieć, czy dodawanie process.nextTick wewnątrz setTimeout pomaga czy nie? Czy wywołanie funkcji wewnątrz process.nextTick zmniejszy zużycie stosu, czy nie?