Soy un JavaScripter novato y no tengo un conocimiento real de lo que sucede dentro del motor V8.
Dicho esto, realmente disfruto de mis incursiones tempranas en el entorno de node.js, pero descubro que estoy constantemente usando events.EventEmitter () como un medio para emitir eventos globales para poder estructurar mis programas para adaptarlos a un notificador-observador patrón similar a lo que escribiría en decir un programa Objective-C o Python.
Siempre me encuentro haciendo cosas como esta:
var events = require('events');
var eventCenter = new events.EventEmitter();
eventCenter.on('init', function() {
var greeting = 'Hello World!';
console.log('We're in the init function!);
eventCenter.emit('secondFunction', greeting);
});
eventCenter.on('secondFunction', function(greeting) {
console.log('We're in the second function!);
console.log(greeting);
eventCenter.emit('nextFunction');
});
eventCenter.on('nextFunction', function {
/* do stuff */
});
eventCenter.emit('init');
Entonces, en efecto, solo estoy estructurando el código 'async' node.js en un código que haga las cosas en el orden que espero, en lugar de eso estoy "codificando hacia atrás" si eso tiene sentido. ¿Habría alguna diferencia en hacer esto de una manera de devolución de llamada, ya sea en cuanto al rendimiento o la filosofía? ¿Es mejor hacer lo mismo usando devoluciones de llamada en lugar de eventos?