ForgeTotal.js 5
nl

Total.js 5

Je code ontkoppelen met events

Total.js 5 · total5@0.0.19 eventsarchitecture Uitgevoerd met Total.js 5

ON(name, fn) registreert een luisteraar, EMIT(name, a, b, c...) roept elke luisteraar aan met de gegeven argumenten, ONCE(name, fn) luistert alleen naar de eerste emit en OFF(name, fn) verwijdert luisteraars. Events zijn binnen het proces en synchroon. Gebruik ze om een functie op iets te laten reageren (een bestelling is betaald) zonder dat de code die het veroorzaakt ervan weet.

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);
}