gaybro8777 / causeeffect Goto Github PK
View Code? Open in Web Editor NEWThis project forked from olado/causeeffect
Evented rules for nodejs - flow management simplified
License: MIT License
This project forked from olado/causeeffect
Evented rules for nodejs - flow management simplified
License: MIT License
Created to simplify flow management when programming in asynchronous environments like nodejs. CauseEffect extends EventEmitter and allows to set cause-effect scenarios. It is simple yet effective. CauseEffect allows you to: * have an event fired when multiple parallel flows complete. * easily unite multiple parallel flows initiated from the for loop. * set up chains: completion of one rule may trigger another. * set the rules dynamically or statically. * have an event fired when any of the flows completes. To run example: node examples/sample.js Installation: npm install causeeffect Usage: To setup a rule where an event will fire if all of the causes happen: ce.setEvents("myevent", ["cause1", "cause2", "cause3"]); To setup a rule where an event will fire if some of the causes happen: ce.setEvents("myevent", ["cause1", "cause2", "cause3"], true); To setup a rule where an event will fire if it happens X times: ce.setEvents("myevent", 10); Listen to effect event as usual with EventEmitter API: ce.on("myevent", callback); To let CauseEffect know that the cause has happened call: ce.setState("cause1"); or if you need a specific value use ce.setState("cause1", value); This value can be then obtained from your event callback with: ce.getState("cause1") To run example: node examples/sample.js Sample: 1. Uniting multiple parallel flows initiated from the for loop: var ce = require('causeeffect'); ce = new ce.CauseEffect(); // Set up ticker cause. Event "myticker" will fire if ce.setState("myticker") was invoked 4 times. // Handy for figuring out when all callbacks have been called initiated from the for loop. ce.setEvents("myticker", 4); function callback() { ce.setState("myticker"); } for(var i = 0; i< 4; i++) { setTimeout(callback, 100); } ce.on("myticker", function() { }); 2. Uniting specific parallel flows // Set up AND cause effect. Event "alldone" will be fired if all of causes happen ce.setEvents("alldone", ["cause1", "cause2", "myticker"]); // Listen to event as usual with EventEmitter API ce.on("alldone", function() { }); // To let CauseEffect know that the cause has happened ce.setState("cause1"); ce.setState("cause2");
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.