初次接触JS回调函数的感悟

近期在看到jQuery中test(index,test)的用法涉及到回调函数,之前未有涉及,于今晚专门看看了看,将个人对于回调函数的理解感悟记录一下,有不正确的地方希望指出。

回调函数(callback),英文中的解释其实更容易理解:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.下面我以拙劣的英文翻译下,回调函数是指函数b被当做函数a的参数使用,且当函数a执行完毕后才会执行函数a。

这里说个题外话,异步async/同步sync

举个栗子:

1.异步:早上起来拉屎,擦屁股,这个肯定是要拉完屎才能擦屁股,不能一边拉屎一边擦屁股,这样擦屁股就没有任何意义,这就是异步。

2.同步:早上起床,你可以坐在马桶上一边拉屎一边抠鼻屎,二者没有任何影响,可同时进行,上下通透,这就是 同步。

来段异步代码示例:


栗子

 


结果

以上代码会先执行函数a,而且不会等到a中的延迟函数执行完才执行函数b, 在延迟函数被触发的过程中就执行了函数b,当js引擎的event 队列空闲时才会去执行队列里等待的setTimeout的回调函数,这就是一个异步的例子。

所以即使,时间设置为0,也是会照样先执行函数b

来段同步代码示例

结果输出1

print函数会等change函数完成之后去执行,所以结构输出为1,因为change函数修改了全局变量a的值,change执行之后才执行的print函数。

回到回调函数的正题。下面再举个从其他博主那里看到的栗子(果然别人家的栗子好吃):

举个现实的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。”对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。

其实这就是一个回调的过程。你留了个函数b(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是函数a。她必须先回到家以后,函数a的内容执行完了,再执行函数b,然后你就收到一条信息了。

这里必须清楚一点:函数b是你以参数形式传给函数a的,那么函数b就叫回调函数。

相信到这里大家已经对callback有一定的认识了,下面上代码:

function  shit(clean_ass)   

{      

   alert("我是函数shit");   

    alert("shit完我会调用clean_ass来清理我的菊花");   

    clean_ass();   

}   

function clean_ass(){   

alert("我要清理我的菊花了");   

}   

function all_action(){

shit(clean_ass);

}

 

 

这样你就完成了拉屎的动作(先拉屎,后清理菊花),如有疏漏之处,烦请指出。

转载于:https://www.cnblogs.com/bbct-1993/p/8342223.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值