Giter Site home page Giter Site logo

eventable's Introduction

eventable.js

Install

npm install x-eventable

Usage

Node.js

const { eventable } = require("eventable.js");

let listener = new eventable();

listener.on("work", (e) => {
  console.log("successful");
});

listener.raise("work");

Javascript

<script src="eventable.browser.js" />

let listener = new eventable();

listener.on("work", (e) => {
  console.log("successful");
});

listener.raise("work");

Examples

Add multiple listeners

let listener = new eventable();

listener.on("A", (e) => {
  console.log(e.type);
});

listener.on("B", (e) => {
  console.log(e.type);
});

listener.raise("A"); //logs: A
listener.raise("B"); //logs: B

Remove listener

let listener = new eventable();

function callback(e) {
  console.log("Hello :)");
}

listener.on("speak", callback);

listener.raise("speak"); //logs: Hello :)
listener.off("speak", callback);
listener.raise("speak"); //Nothing happens

Stop chain

let listener = new eventable();

function callback(e) {
  console.log("Hello :)");

  e.stop = true; //cancels each listener that is positioned after the current
}

listener.on("speak", callback); //logs: Hello :)
listener.on("speak", callback); //nothing happens

listener.raise("speak");

Options

let listener = new eventable();

function callback(e) {
  console.log(`Hello ${e.details}`); //logs: Hello World!
  console.log(e.target); //logs: listener (object)
  console.log(e.type); //logs: speak
  console.log(e.stop); //logs: false
  console.log(e.return); //logs: null

  return "nice to meet you";
}

listener.on("speak", callback); //logs: Hello :)

var ev = listener.raise({
  type: "speak",
  details: "World!", //can be any object
});

console.log(ev.return); //logs: nice to meet you

Inheritance

function myObject() {
  eventable.call(this);

  this.answer = "foo";
}

myObject.on("ask", (e) => {
  console.log("answer is: " + e.target.answer); //logs: answer is: foo
});
myObject.raise("ask");

Try raise

var A = new eventable();
var B = {};

A.on("test", (e) => {
  console.log("success");
});

console.log(eventable.canRaise(A)); //logs: true
console.log(eventable.canRaise(B)); //logs: false

//or if eventable.raise == null
var resultA = eventable.raise(A, "test");
var resultB = eventable.raise(B, "test");

console.log(resultA); //logs: event (object)
console.log(resultB); //logs: null

Definition

Event-Object

function _event() {
  this.target = null; //the eventable
  this.details = {}; //any data you want to share with your listeners
  this.stop = false; //true stops each listener that would be called after the current one
  this.type = ""; //the event type
  this.return = null; //the return of the previous listener
}

eventable's People

Contributors

tom-siegel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.