前端实现消息侦听发送的一点小思路

在做前端项目的过程中经常会遇到这种问题,即执行完某个动作之后调用另外模块的某个功能。而如果需要执行的功能在该模块中不对外调用,这样就会有比较曲折的方法去调用。今天翻看以前的项目代码,发现有一种比较快捷的实现方法,即在前端设置"侦听者"模式。

方法的实现思路很简单。

首先,需要一个全局数组或者hash来存储所有的注册事件,同时在工程中设置全局都可调用的函数,subscribe,这个函数的主要功能是实现事件的注册,id和dataType应唯一,caller是回调函数。代码片段如下。

function <span style="font-family: Arial, Helvetica, sans-serif;">subscribe</span>(id, dataType, caller)
{
	var obj = new Object();
	obj.id = id;
	obj.dataType = dataType;
	obj.caller = caller;
	this.data.list.push(obj);
};
     
其次,一个对应的消息发送函数也是必须的,这个函数主要的功能为消息的发送,即通知侦听者,“我已经准备好了,你可以调用相应的回调了”。代码片段如下。
function publish(dataType, opts)
{
	var items = getsFromArrayO(this.data.list, {dataType: dataType});//从已经注册的数组中找到相应的事件
	for(var i in items)
	{
		var caller = items[i].caller;
		if(typeof caller == "function")
			caller(opts);
		else if(caller)
			caller.call(opts);
	}
};

经过以上两步,就可以实现前端的消息侦听发送了。

使用的方法是首先在有需要调用的地方使用subscribe注册一个事件,然后在执行完某个动作后需要调用别的方法的时候使用publish函数发送相应的消息,侦听者会自动从已经注册的方法找到对应的回调来执行。这种方法使用起来非常方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值