Eu sou um JavaScripter iniciante e não tenho conhecimento real do que acontece dentro do mecanismo V8.
Dito isso, estou gostando muito das minhas primeiras incursões no ambiente node.js., mas acho que estou constantemente usando events.EventEmitter () como um meio de emitir eventos globais para que eu possa estruturar meus programas para caber em um observador-observador padrão semelhante ao que eu escreveria, digamos, um programa Objective-C ou Python.
Encontro-me sempre fazendo coisas assim:
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');
Portanto, na verdade, estou apenas estruturando o código 'async' node.js no código que faz as coisas na ordem que eu esperava; em vez disso, estou meio que "codificando para trás", se isso faz sentido. Haveria alguma diferença em fazer isso de uma maneira pesada de retorno de chamada, tanto em termos de desempenho quanto em termos de filosofia? É melhor fazer a mesma coisa usando retornos de chamada em vez de eventos?