什么是回调函数?

 我在一个github的代码上看到有命名为Callback的函数。

 我今天之前对回调函数的概念都不清除,回调函数是什么?如何使用以及有什么优势?带着这三个问题。利用费曼学习法的精神,我把我理解的概念整理复盘,加深印象。

什么是编程类型

首先,在知道回调函数的概念前,需要清楚另外一个编程类型的概念。

编程分为两种类型:系统编程以及应用编程。

系统编程的对象是API,编程人员使用库进行开发,库是开发的底层结构,是开发人员利用的工具和服务。系统编程基于库的编程。

而应用编程是程序员开发应用需要编写的程序,编写的程序调用库中的函数暴露出的接口,实现编程人员的功能需求。

明显看出上述可以分成两个不同的抽象层次,底层我称之为库层,上一层称为应用层。

什么是回调函数?

回调函数在应用层,作为API的参数被库层调用。

这里可以举一个例子说明一下这之间的管理。

酒店一般会为客户提供叫醒服务。但是客户可以选择如何被叫醒。可以是服务员到时敲门,可以是电话叫醒,可以是用一桶水泼醒,这几种方式最为客户的意愿

告诉酒店。

很明显,酒店的叫醒服务是库层的API服务,这里换个说法,叫做中间函数。而客户的意愿是回调函数。

A-B还是A-b-c?

网上很多说法是中间函数调用了回调函数,是A-b关系。但是实际上回调函数是A-b-c的关系。

我们不要忽略了调用中间函数的对象,我把它称为初始函数。

回调函数和初始函数处于同一抽象层------应用层。

回调函数的流程是:

(1)初始函数调用了中间函数,并决定调用中间函数的参数--回调函数对象。

(2)中间函数执行过程中调用了回调函数。

初始函数也有它的作用。

(1)阻塞型回调函数:在初始函数返回前调用回调函数

(2)延迟型型函数:在初始函数返回后调用回调函数

延迟型回调函数一般是多线程的。

回调函数的优势?

回调函数可以改变中间函数的内容以及结果,非常灵活。

原文地址:https://www.cnblogs.com/gzhich2019/p/11899577.html