我是JavaScript新手,对V8引擎内部发生的事情一无所知。
话虽这么说,我真的很喜欢在node.js环境中的早期尝试,但是我发现自己一直在使用events.EventEmitter()作为发出全局事件的一种方式,以便我可以构造程序以适应通知者-观察者模式类似于我将要写的Objective-C或Python程序。
我发现自己一直在做这样的事情:
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');
因此,实际上,我只是将“异步” node.js代码结构化为按预期顺序执行操作的代码,如果可以的话,我有点“向后编码”。在性能上或哲学上以大量回调的方式执行此操作会有所区别吗?使用回调而不是事件来做相同的事情更好吗?