ForgeTotal.js 5
de

Total.js 5

Code mit Events entkoppeln

Total.js 5 · total5@0.0.19 eventsarchitecture Mit Total.js 5 ausgeführt

ON(name, fn) registriert einen Listener, EMIT(name, a, b, c...) ruft jeden Listener mit den angegebenen Argumenten auf, ONCE(name, fn) hört nur auf das erste Emit und OFF(name, fn) entfernt Listener. Events laufen im selben Prozess und synchron. Nutze sie, damit eine Funktion auf etwas reagiert (eine Bestellung wurde bezahlt), ohne dass der auslösende Code von ihr weiß.

definitions/audit.js
MAIN.audit = [];

ON('order.paid', function(order) {
	MAIN.audit.push('paid ' + order.id);
});

ONCE('order.first', function(order) {
	MAIN.audit.push('first ' + order.id);
});
controllers/orders.js
exports.install = function() {
	ROUTE('POST /pay/{id}/', pay);
	ROUTE('GET /audit/', audit);
};

function pay($) {
	var order = { id: $.params.id };
	EMIT('order.first', order);
	EMIT('order.paid', order);
	$.json({ ok: true });
}

function audit($) {
	$.json(MAIN.audit);
}