[编程]回调函数的理解

之前断断续续有听过回调函数,但是一直都没去了解 :huaji13:

今天在看Go专家编程的时候,定时器那一章有讲到相关概念,于是我就去看了看

以下为个人拙见

 

笔记

总的来说,程序员有两种,一种是编写库,进行系统编程的程序员,(很cool,所以叫cool程序员),他们和系统底层与语言实现打交道,对于编写完的库会提供API接口给他人调用

没错,另一种就是编写应用程序的应用程序员,他们在应用层调用库提供的API接口实现自己的应用。

当程序跑起来时,一般情况下,应用程序(application program)会时常通过API调用库里所预先备好的函数。但是有些库函数(library function)却要求应用先传给它一个函数,然后再在合适的时候调用,以完成目标任务。这个被传入的、后又被调用的函数就称为回调函数(callback function)。

所以,回调函数是一个函数,调用者是库函数,编写者只编写而不调用,由库函数进行调用,回调函数以参数的形式传入库函数从而成为库函数正常执行的一部分,改变、定义执行函数的行为和动作

官方的定义为:

在计算机科学中,回调函数是指一段以参数的形式传递给其它代码的可执行代码。

注意,回调函数是一种软件设计上的概念,和某个编程语言没有关系,几乎所有的编程语言都能实现回调函数。(支持函数作为变量传递的语言实现起来应该会更方便吧)

有些第三方库函数不清楚我们在执行一些操作后接着要干什么,而这些操作往往是耗时不确定的,甚至结果不确定的,所以无法老老实实等待这个函数执行完后在接着调用我们自己编写的函数,所以干脆将我们的函数交给库函数,让他们决定调用的节点

回调的类型

同步回调

即正常的流程

主程序 -》传入回调函数 -》 执行库函数 -》 库函数执行回调函数 -》 返回主程序

但是同步回调有问题

在同步模式下,服务调用方会因服务执行而被阻塞暂停执行,会导致整个线程被阻塞,而异步则更加高效,不需要原地等待,从而能更好地利用机器资源。

 

别名:函数指针,函数式编程

 

参考

回调函数(callback)是什么? - no.body的回答 - 知乎

回调函数(callback)是什么? - 码农的荒岛求生的回答 - 知乎 

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注