• 什么是回调函数?


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

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

    什么是编程类型

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

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

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

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

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

    什么是回调函数?

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

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

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

    告诉酒店。

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

    A-B还是A-b-c?

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

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

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

    回调函数的流程是:

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

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

    初始函数也有它的作用。

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

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

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

    回调函数的优势?

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

  • 相关阅读:
    团队代码
    团队代码
    团队代码
    团队代码
    innerHTML与innerText与outHTML与outText 的区别。
    【C++】 C++知识点总结
    【海思】Hi3516A 运行sample_venc的demo内核奔溃(DDR问题)
    【C/C++】 C++寄存器优化
    【工具】 memtester内存压力测试工具
    【知识点】 gcc和g++的联系和区别
  • 原文地址:https://www.cnblogs.com/gzhich2019/p/11899577.html
Copyright © 2020-2023  润新知