理解JS回调函数
今天困到极致的时候,突然在想回调函数是啥,一直听说也没接触过(日常吐槽,我实在太菜了)
https://www.zhihu.com/question/19801131
这是我看到的一篇文章来理解的回调(文章和评论都写得超级棒)
什么是回调函数?
编程分为两类:系统编程(system programming)和应用编程(application programming)。所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用。所以在抽象层的图示里,库位于应用的底下。当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。
看了作者的文章的基础上看到了一个评论
使用场景
只有应用于场景,才能深入理解
A lot of the time, a “callback” is a function that is called when something happens. That something can be called an “event” in programmer-speak.(很多时候 callback 都是用来执行事件驱动的任务 比如有货了通知我 | 你到家了再叫我做饭 等等之类的 )
相当于:
打开文件是一个库函数(只会打开文件),我是应用函数,读文件(此时是一个函数)
不用回调的话就是:
- 我调用库函数(他帮我打开文件)
- 我等待他打开完
- 等他打开完,我就读文件
- 我要一直读文件
用回调:
- 我调用库函数,顺便把读文件这个函数传给他(等同于让他有了读文件的能力)
- 库函数打开了文件之后还帮我读入了文件
- 在他打开文件以及读入文件这个过程中,此时我去干别的事了(比如我去玩了,我完全不用管)
- 库函数读完文件之后就直接把文件给我了(回调函数让我省出了玩的时间)