函数回调

新人写博客,有误之处或者不足之处望见谅并告知,感谢!

----------------------------------------我是分界线------------------------------------

本人目前刚从事Lua脚本工作,也算是第一次接触,上班第一天同事问我,是否懂得函数回调?????

函数回调???什么东西??懂得函数引用,以及之前使用过的js将函数名传参进去并调用、引用,不过他问的肯定没有这么简单。于是我上网搜资料。。。。

对自己汗颜~~~先看下图:

当初仅看了这么个解释,当时的状态算是一知半解就差代码实现。。。。。还是上网搜吧。。。。。搞了半天、搜了半天,依旧在这个瓶颈,之后同事实在看不下去了就给我写了一个简单的demo。

---------------------------一下是Lua的程序----------------------

--这是容器

local tb1={
a_ = {}
}

--记录信息  算是一个接口
function tb1:write(event, target, call)
self.a_[event] = {t = target, c = call}
end

--检查信息是否存在,若存在,则调用函数
function tb1:check(event, ...)
if self.a_[event] then
self.a_[event].c(self.a_[event].t, ...)
end
end

--这是目标容器

local b = {}
function b:p(msg)  --目标函数,也是之后被回调的函数
print("传进来的信息是----"..msg)
end

tb1:write('a', b, b.p)    --保存信息或者是注册信息

tb1:check('a', 'aaaaaaaaaa')  --检查信息是否被注册

----------------------------------------Lua程序结束---------------------------------

程序原理:

write函数主要功能是注册信息,将传递进来的信息保存至tb1的表中,check函数主要功能是去检查event是否被注册,若成立则调用保存着的函数并将参数传递进去,这两个是主要功能函数。

p函数是打印函数,在这里当做被回调的函数,并且被保存,回调待命。

 

根据自己的理解简述下函数回调:

在一个空间中将事件与函数注册,之后从该空间中去寻找,若事件被触发则运行相应的函数。

跟函数引用的区别:

引用除了将信息传递进去之外,还需要将作用的函数传递进去,需要知道作用在哪个函数上;

而回调的机制不需要知道作用在哪个函数上,仅仅需要的是该事件已经被注册并且有相应的函数可以回调。

 

---------------------------------------------------------------这是一条丑爆了的分界线---------------------------------------------------

 

现在回想起来还是有点迷糊,如果哪里有失误之处望指教,新人小白首次发表,希望技术大牛多多指教!!

 

图片中的资源来自:http://blog.csdn.net/zhangliangzi/article/details/52066560

posted @ 2018-03-22 14:44  半路出家当和尚  阅读(138)  评论(0编辑  收藏  举报