Skip to content

Instantly share code, notes, and snippets.

@learncodeacademy
Created July 29, 2015 02:54
Show Gist options
  • Save learncodeacademy/777349747d8382bfb722 to your computer and use it in GitHub Desktop.
Save learncodeacademy/777349747d8382bfb722 to your computer and use it in GitHub Desktop.

Revisions

  1. learncodeacademy created this gist Jul 29, 2015.
    26 changes: 26 additions & 0 deletions pubsub.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,26 @@
    //events - a super-basic Javascript (publish subscribe) pattern

    var events = {
    events: {},
    on: function (eventName, fn) {
    this.events[eventName] = this.events[eventName] || [];
    this.events[eventName].push(fn);
    },
    off: function(eventName, fn) {
    if (this.events[eventName]) {
    for (var i = 0; i < this.events[eventName].length; i++) {
    if (this.events[eventName][i] === fn) {
    this.events[eventName].splice(i, 1);
    break;
    }
    };
    }
    },
    emit: function (eventName, data) {
    if (this.events[eventName]) {
    this.events[eventName].forEach(function(fn) {
    fn(data);
    });
    }
    }
    };