Taken
Not Your Mother's FRP framework.
A simple, lightweight JavaScript Framework for handling FRP.
Installation
Include the script:
<script src="/path/to/taken.js"></script>
npm install taken
var T = require('taken');
Usage
Channels can be saved globally with
or as a variable with
var ChannelName = T().map
Listen to channel:
T('xyz').map(function(value){
console.log(value);
});
or
var myChannel = T().map(function(value){
console.log(value);
});
Send to channel
T('xyz')('Hello World!');
or
myChannel('Hello World!');
Listen to multiple channels:
T('xyz abc').map(function(value){
console.log(value);
});
or
var myChannels = T('xyz abc').map(function(value){
console.log(value);
});
Send to multiple channels:
T('xyz abc')('Hello World!');
or
myChannels('Hello World!');
Historic merge:
T('xyz zyx').historic(function(xyz, zyx){
console.log(xyz, zyx);
});
T('xyz')('Hello');
T('zyx')('World!');
T('xyz')('Goodbye');
Forwarding to channel:
T('merged').map(function(value){
console.log(value);
});
T('xyz').map(T('merged'));
T('zyx').map(T('merged'));
T('xyz')('Hello');
T('zyx')('World!');
or
var Merged = T();
T('xyz').map(T(Merged));
T('zyx').map(T(Merged));
Chaining:
T('xyz').map(function(value, next){
next(value + 1);
}).map(function(value, next){
next(value + 1);
}).map(function(value){
console.log(value);
});
Filtering:
T('xyz').map(function(value, next){
val<10 && next(value);
}).map(function(value){
console.log(value);
});
Intervals:
T('xyz').intervals(300);
T('xyz').map(function(){
console.log(Date.now());
});
Authors
Joe Reeve