Nodejs a une méthode process.nextTick(fn)
qui retarde l'exécution d'une fonction jusqu'à la prochaine coche. Selon this article cela peut être utilisé pour émettre des événements dans le constructeur d'un objet comme celui-ci (copié à partir du Artice):Nodejs: Quand une coche est-elle exécutée
function StreamLibrary(resourceName) {
var self = this;
process.nextTick(function() {
self.emit('start');
});
}
var stream = new StreamLibrary('fooResource');
stream.on('start', function() {
console.log('Reading has started');
});
Sans process.nextTick
cela n'aurait pas fonctionné parce que l'événement aurait été émis avant eu la chance d'écouter des événements. Cependant, comment pouvez-vous être certain que l'événement ne sera pas émis avant d'avoir ajouté un écouteur d'événement? Si elle est entièrement asynchrone, il y a une chance que la prochaine coche soit exécutée avant la fin du constructeur, ignorant ainsi l'écouteur d'événement. Alors, quelles sont les règles derrière ce processus? Quand le noeud exécute-t-il un nextTick?