Code Monkey home page Code Monkey logo

eventproxy's Introduction

#EventProxy

###自定义事件、观察者模式

EventProxy是js自定义事件、观察者模式的一种实现,目的是为了解耦js逻辑,使代码更易扩展维护。EventProxy支持链式操作。

###使用方法

#####proxy.on(name, fn)

注册事件

var proxy = EventProxy();
proxy.on('test1', function () {
	console.log(1);
})
.on('test2', function () {
	console.log(2);
});

#####proxy.trigger(name, arg1[, arg2][, arg3])

触发事件

proxy.trigger('test', '1', '2', '3');	

#####proxy.off(name, fn)

移除事件

proxy.off('test', function () {
	console.log
});

#####proxy.once(name, fn)

注册只执行一次事件,该接口注册的事件在trigger触发一次后即会移除

proxy.once('test', function (a, b) {
	console.log(a);
	console.log(b);
})
.trigger('test', 1, 2)
.trigger('test', 3, 4); 

输出结果:

  • 1
  • 2

#####proxy.many(name, times, fn) 在trigger times次后,事件将会自动移除

var counter = 0;
proxy.many('test', 2, function () {
	counter++;
	console.log(counter);
})
.trigger('test')
.trigger('test')
.trigger('test');

输出结果:

  • 0
  • 1

#####proxy.assign(name1[, name2][, name3], fn)

当所有事件name1, name2, name3 触发完后,执行函数fn

proxy.assign('test1', 'test2', 'test3', function (arg1, arg2, arg3) {
	console.log(arg1);
	console.log(arg2);
	console.log(arg3);
});

setTimeout(function () {
	proxy.trigger('test1', 100);
}, 100);
proxy.trigger('test3', 700, 800);
proxy.trigger('test2', 100, 200);

输出结果:

  • 100
  • [100, 200] //当参数多于1个时,自动转换为数组传递
  • [700, 800]

eventproxy's People

Contributors

singno avatar

Stargazers

qingming avatar

Watchers

James Cloos avatar  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.