| 

.NET C# Java Javascript Exception

4
Frage sagt alles. Will die EBCs auch im Web-Frontend einsetzen.
20.07.2011
PunschBruder 41 3
3 Antworten
4
Ja, habe ich.

Zwar mit CoffeeScript, aber das Ergebnis ist ja JavaScript.

Siehe https://gist.github.com/1074798. Allerdings verwende ich hier die Klasse EventEmitter von Node.js, aber das Prinzip zeigt, wie es geht ...
20.07.2011
Golo Roden 2,7k 3 9
Danke. Geht das auch ohne CoffeeScript?
PunschBruder 20.07.2011
Ja, wie gesagt, CoffeeScript wird ohnehin in JavaScript übersetzt. Die größere Herausforderung ist vermutlich, einen Ersatz für EventEmitter zu finden.
Golo Roden 20.07.2011
Für das JavaScript, geh auf http://jashkenas.github.com/coffee-script/ dann auf "Try CoffeeScript" und paste den Code dort ...
Golo Roden 20.07.2011
Ja. Aber CoffeeScript läuft nur mit node.js und das wiederum nur auf Linux :-(
PunschBruder 20.07.2011
1
Stimmt nicht. Node.js läuft auch auf Windows (seit neuestem sogar nativ).
Den JS-Code kannst Du Dir ja wie gesagt selbst leicht übersetzen, einziger Haken ist die EventEmitter-Klasse.
Golo Roden 20.07.2011
Ui, das ja cool.
PunschBruder 20.07.2011
Und wie man einen EventEmitter selbst baut, steht hier: http://blog.new-bamboo.co.uk/2010/7/14/custom-event-emitters-in-javascript
Golo Roden 20.07.2011
aber ein einfaches JS-Beispiel wäre mir doch lieber.
PunschBruder 20.07.2011
1
Für ein bisschen EBC muss es ja nicht gleich ein EventEmitter sein, oder?

Mit einem Pin:

var pin = function(){
return{
subscribers : [],
connectTo : function(fn){
this.subscribers.push(fn);
},
invoke : function(msg){
for(var i = 0; i < this.subscribers.length; i++){
this.subscribers[i](msg);
}
}
};
};


lassen sich doch EBC schon realisieren:

process_some_data = {
input : function(msg){
var result = msg.data + 1337;
output.invoke(result);
},
output : pin()
};

process_some_complex_data = {
wireUp: function(msg){
process_some_data1.output.connectTo(process_some_data2.input);
process_some_data2.output.connectTo(this.output.invoke);
},
input : function(msg){
process_some_data1.input(msg);
},
output : pin()
};


klar da gehört noch etwas Fantasie dazu, aber um deine Frage zu beantworten, ja ich hab EBC schon mit javascript verwendet, das geht ohne weiteres.
08.09.2011
bugbite 81 1

Stelle deine Javascript-Frage jetzt!