Jestem początkującym programistą JavaScripter i nie mam prawdziwej wiedzy o tym, co dzieje się w silniku V8.
Powiedziawszy to, bardzo lubię moje wczesne wyprawy do środowiska node.js, ale okazuje się, że ciągle używam events.EventEmitter () jako środka do emitowania globalnych zdarzeń, dzięki czemu mogę tak ustrukturyzować swoje programy, aby pasowały do obserwatora-obserwatora wzorzec podobny do tego, co bym napisał w programie Objective-C lub Python.
Zawsze robię takie rzeczy:
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');
W efekcie po prostu konstruuję kod „asynchroniczny” node.js w kodzie, który wykonuje czynności w oczekiwanej przeze mnie kolejności, zamiast tego w pewnym sensie „koduję wstecz”. Czy byłaby jakaś różnica w robieniu tego w sposób zwrotny, pod względem wydajności lub filozofii? Czy lepiej robić to samo przy użyciu wywołań zwrotnych zamiast zdarzeń?