编程分为两类:系统编程(system programming)和应用编程(application programming)。
所谓系统编程,简单来说,就是编写库;而应用编程就是利用写好的各种库来编写具某种功用的程序,也就是应用。系统程序员会给自己写的库留下一些接口,即API(application programming interface,应用编程接口),以供应用程序员使用。所以在抽象层的图示里,库位于应用的底下。当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,好在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。
1.什么是回调?
简单说:回调是一个在另一个函数完成执行后所执行的函数——故此得名“回调”。
更复杂地说:在 JavaScript 中,函数是对象。因此,函数可以将函数作为参数,并且可以由其他函数返回。执行此操作的函数称为高阶函数。任何作为参数传递的函数都称为回调函数。
2.为什么我们需要回调?
一个非常重要的原因—— JavaScript 是一种事件驱动的语言。这意味着,在继续之前, JavaScript 不会等待响应,而是继续执行且同时监听事件。我们来看一个简单的例子: