zoukankan      html  css  js  c++  java
  • 什么是回调函数?

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

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

    什么是编程类型

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

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

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

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

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

    什么是回调函数?

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

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

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

    告诉酒店。

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

    A-B还是A-b-c?

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

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

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

    回调函数的流程是:

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

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

    初始函数也有它的作用。

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

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

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

    回调函数的优势?

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

  • 相关阅读:
    国庆七天乐——第二天
    国庆七天乐——第一天
    线段树+树状数组+分块+循环展开 的模板
    AOE网络——求关键路径
    最小生成树模板+并查集(隐藏)+结构体排序模板
    并查集模板
    最短路径模板总结
    newifi mini将led指示灯引出当gpio使用
    openwrt 无线中继
    笔记本硬盘盒改装台式机硬盘盒
  • 原文地址:https://www.cnblogs.com/gzhich2019/p/11899577.html
Copyright © 2011-2022 走看看