js_callback回调函数

问题背景:callback回调函数算是js里的一个大头,我之前是模仿式写代码,并没有领会到callback的本质。后来遇到了个同步异步的问题,一定要弄懂callback才行,就硬着头皮总算搞懂啦~
既然代码搞定了,下面就回过头来整理一下(笑)


网上的讲解各式各样,其中我觉得讲的最好的是知乎上的一个例子:
链接:https://www.zhihu.com/question/19801131/answer/17312995

你去食堂打饭,你去了一个小炒窗口。
你跟老板说了要×××盖饭。
老板说:你是100号,喊到你的号你就来拿菜。
然后你在旁边跟同学吹牛、玩手机。。。
当你听到老板喊100号并且把菜放到窗口。
你走到窗口,拿到你的菜。

这里面就有典型的异步操作、回调函数的概念。
好吧,先搞清楚一些问题再回头分析

1.回调函数在什么场景有用?
我要在特定时候执行一个任务,至于是什么时候我自己都不知道。比如某一时间到了或者某一事件发生或者某一中断触发。
举个栗子:刚才的打饭故事中,我并不知道老板什么时候会叫我拿饭,那么在等待这段时间,我就干等着吗?当然也可以,但是会不会太无聊了些???对应到前端页面中,比如,让用户一直等待一个图片加载出来,加载过程中,用户啥也不能干,用户会骂人的吧(笑)

2.回调函数怎么起作用?
把我要执行的这个任务写成一个函数,将这个函数和某一时间或者事件或者中断建立关联。怎么个建立关联法?在事件中调用这个函数嘛。
这里写图片描述
比如这个图上,gainJSON是一个函数,它有两个参数,一个是url,是个变量;一个是callback,是个函数。那有人要问了函数也能作为另一个函数的参数吗?不好意思,JS中可以!接着,可以看到,在gainJSON这个函数里,调用了callback函数。

3.回调函数什么时候执行?
当该回调函数关心的那个时间或者事件或者中断触发的时候,回调函数将被执行。一般是触发这个时间、事件或中断的程序主体(通常是个函数或者对象)观察到有一个关注这个东东的回调函数的时候,这个主体负责调用这个回调函数。

4.回调函数有什么好处?
最大的好处是你的程序变成异步了。也就是你不必再调用这个函数的时候一直等待这个时间的到达、事件的发生或中断的发生(万一一直不发生,你的程序会怎么样?)。在此期间你可以做做别的事情,或者四处逛逛。当回调函数被执行时,你的程序重新得到执行的机会,此时你可以继续做必要的事情了。

5.回调函数有什么问题吗?
当然就会有点问题。回调函数很多情况下会附带有跨线程操作甚至于跨进程的操作,这些都是异步带来的成本。(关于这个,我下一篇博客会讲讲)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值