JSFiddle - React, Tailwind, and code Playground

by Chase Wilson

JavaScript

function channel(fns) {
    var chan = {fns: fns || []};
    chan.give = channel.give.bind(chan);
    chan.take = channel.take.bind(chan);
    return chan;
}

channel.give = function() {
    var self = this
    self.fns.forEach(function(fn) {
        fn.apply(val, arguments);
    })
}
channel.take = function(fn) {
    var args = arguments, i = 0;
    for(i = 0; i < args.length; i ++) this.fns.push(args[i]);
}