JS回调函数

看了蒙秀泽发表的Java回调机制,做个总结,回调必然用到接口,他所谓的回调机制就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A,供A去调用,这种机制被称为回调。

Teacher类中定义了一个提问方法,这个方法用到了Student接口和该接口中的解决问题方法,但是抽象方法没有具体的实现,需要Ricky类去实现,
Ricky类实现该方法后 ,它本身不会再去调用方法,而是传递给Teacher类,供Teacher类去调用。

我理解的回调函数(以JS为例):是一个函数的调用过程,一个函数调用另一个函数
中文例子:你去一个杂货店买米,但是米没有了,于是你留下了电话号码说有货了就给我打电话,过了几天杂货店有货了,然后店员给你打电话,你就去取货回来了。
其中,电话号码就是一个回调函数,留下电话号码叫登记回调函数,杂货店有货了叫做回调函数关联的事件,店员给你打电话叫做调用回调函数,你去取货回来叫做回调函数的响应

比如函数a有一个参数是函数b,如果函数a执行完了又执行函数b,这个过程就叫做回调。

至于为什么一定要以参数形式传过去吗,我不可以直接在函数a里面调用函数b吗?确实可以。但是如果你直接在函数a里调用函数b的话,那么这个回调函数就被限制死了,就失去了变量的灵活性。
使用函数作为参数的好处就是:当你a(b)的时候b为回调函数,当你使用a(c)的时候c为回调函数。

例:

<html>
<head>
<title>回调函数(callback)</title>
<script language="javascript" type="text/javascript">
function a(callback){
alert("我是parent函数a");
alert("开始调用回调函数");
callback();
}
function b(){
alert("我是回调函数b");
}
function c(){
alert("我是回调函数c");
}
function test(){
a(b);
a(c);
}
</script>
</head>

<body>
<h1>学习js回调函数</h1>
<input type="button" value="callback" onClick=test() />
<p>应该能看到调用了两个回调函数,先调用a函数,然后调用b回调函数,调用a函数,然后再调用c回调函数</p>
</body>
</html>

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值