`
achievo_bruce
  • 浏览: 117031 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

理解“回调函数”

    博客分类:
  • java
阅读更多
java理解“回调函数”
所谓回调,就是客户程序CLIENT调用服务程序SERVER中的某个函数SA,然后SERVER又在某个时候反过来调用CLIENT中的某个函数CB,对于CLIENT来说,这个CB便叫做回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。
一般说来,CLIENT不会自己调用CB,CLIENT提供CB的目的就是让SERVER来调用它,而且是CLIENT不得不提供。由于SERVER并不知道CLIENT提供的CB叫甚名谁,所以SERVER会约定CB的接口规范(函数原型),然后由CLIENT提前通过SERVER的一个函数R告诉SERVER自己将要使用CB函数,这个过程称为回调函数的注册,R称为注册函数。Web SERVERerviCliente以及Java的RMI都用到回调机制,可以访问远程服务器程序。

下面举个通俗的例子:
某天,我打电话向你请教问题,当然是个难题,:),你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。
通过上面个人感觉到回调函数更多的应用就是结合异步。比如:ajax中jServer通过组件和服务器的异步通信。

什么是回调函数

精妙比喻:回调函数还真有点像您随身带的BP机:告诉别人号码,在它有事情时Call您
回调用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调,例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。
其实回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高层的调用,一般这个函数对高层都是已知的;而回调正好相反,他是高层提供给底层的调用,对于低层他是未知的,必须由高层进行安装,这个安装函数其实就是一个低层提供的API,安装后低层不知道这个回调的名字,但它通过一个函数指针来保存这个回调,在需要调用时,只需引用这个函数指针和相关的参数指针。

其实:回调就是该函数写在高层,低层通过一个函数指针保存这个函数,在某个事件的触发下,低层通过该函数指针调用高层那个函数。
分享到:
评论
2 楼 ivyloo 2009-07-31  
不错,介绍的通俗易懂,谢谢!
1 楼 cjc19762338 2008-09-26  

相关推荐

    帮助理解回调函数的简洁实例

    在给出的链接中,博客文章《通过代码复用的场景理解回调函数是怎么一回事》可能会提供具体的代码示例,展示如何在实际场景中使用回调函数来实现代码复用和功能组合。通过阅读这个例子,你可以更好地理解回调函数的...

    回调函数回调函数回调函数

    回调函数在计算机编程中是一种非常重要的机制,它允许我们将一个函数作为参数传递给另一个函数,以便在特定条件或事件发生时由被...回调函数是理解和掌握高级编程技巧的关键,尤其在需要处理事件驱动和分布式系统时。

    mfc下实现回调函数

    首先,我们需要理解回调函数的基本概念。回调函数是一种函数,它的地址被存储在另一个函数中,当那个函数执行到一定阶段时,会调用这个保存的地址,即回调函数。在MFC中,回调函数常常用于处理消息、事件或者在多...

    PB 回调函数,多线程

    首先,让我们深入理解回调函数的概念。回调函数是一种设计模式,允许我们将一个函数作为参数传递给另一个函数。当被调用的函数完成其操作后,它会执行传递给它的这个函数,即回调函数。在多线程环境中,回调函数常...

    C#回调函数示例

    首先,我们需要理解回调函数的基本概念。回调函数本质上是一个在其他函数完成其工作后被调用的函数。在C#中,我们通常使用委托(Delegate)来实现回调机制。委托是类型安全的函数指针,可以引用一个或多个具有相同...

    回调函数回调函数回调函数回调函数回调函数回调函数

    回调函数在编程中是一种常见的设计模式,特别是在异步编程中,它被广泛应用于处理任务的完成、事件的响应以及函数间的交互。...在实际开发中,理解和熟练掌握回调函数及其优化方案对于提升代码质量至关重要。

    回调函数演示

    首先,理解回调函数的基本概念是关键。回调函数是一个在其定义之外被调用的函数,它通常是通过将函数指针作为参数传递给另一个函数来实现的。当这个接收函数完成其任务或遇到某个特定条件时,它会使用这个函数指针...

    vc回调函数例子

    首先,我们需要理解回调函数的基本概念。回调函数本质上是一个指针,它指向一个可执行的代码块(函数)。当被调用函数执行完毕或在特定条件下,会调用这个回调函数。在C++中,通常使用函数指针来实现回调,但也可以...

    C#回调函数

    首先,让我们理解回调函数的基本概念。在C#中,一个方法可以被定义为委托类型,委托实际上就是指向方法的引用。当我们将一个方法的实例赋值给委托变量时,就创建了一个回调。这样,我们就可以将这个委托作为参数传递...

    VC++ 回调函数使用实例

    首先,我们要理解回调函数的基本概念。在C++中,由于语言的特性,不能直接像某些动态类型语言那样传递函数作为参数。但是,通过函数指针或函数对象,我们可以实现类似的功能。函数指针可以被视为指向函数的指针,...

    简单的回调函数例子

    首先,我们需要理解回调函数的基本概念。回调函数就是一个函数的指针,这个指针在其他函数执行过程中被用来调用该函数。在C语言中,我们通常定义一个函数原型,并将其作为参数传递给另一个函数。例如: ```c ...

    VC++回调函数

    首先,我们需要理解回调函数的基本概念。在C++中,回调函数通常是通过函数指针实现的。当一个函数A需要在某个操作完成后调用用户定义的函数B时,A会接受一个函数指针作为参数,这个指针指向函数B。这样,当条件满足...

    手动回调函数

    首先,让我们理解回调函数的基本概念。回调函数本质上是一个函数的引用,它被作为参数传递给另一个函数。当这个接收函数完成某些操作后,它可以调用传递进来的回调函数来执行后续处理。这种模式常用于异步编程,如...

    C++回调函数

    ### C++中的回调函数 #### 一、回调函数的概念 在C++中,回调函数是一种特殊的函数使用方式,它的核心在于“回调”二字...尽管如此,理解回调函数的基本概念仍然是非常有价值的,尤其是在与其他语言或旧代码集成时。

    C#调用C++动态库中自身定义的回调函数

    首先,让我们理解回调函数的概念。回调函数是一种设计模式,允许将一个函数的地址作为参数传递给另一个函数。在C++中,这通常是通过函数指针实现的。当C++库执行到需要调用用户提供的函数时,它会使用这个指针来调用...

    经典回调函数实例

    在“经典回调函数实例”中,我们可以想象一个朋友打电话的情景来理解回调函数的工作原理。假设你有一个朋友A,他想要告诉你一些消息,但他只能在电话接通后才能告诉你。因此,A不会立即告诉你消息,而是先打给你,当...

    DLL回调函数Demo

    首先,我们需要理解回调函数的概念。回调函数是一种编程技术,允许我们将一个函数的地址作为参数传递给另一个函数,然后在需要的时候由被调用的函数来执行这个传入的函数。在DLL中,回调函数通常用于实现动态库与...

    C#传递回调函数

    首先,让我们理解回调函数的基本概念。回调函数本质上是一个在其他函数内部被调用的函数,它的功能是在适当的时候执行预先定义好的行为。在C#中,我们可以使用委托(Delegate)来实现回调机制。委托是类型安全的函数...

    回调函数Callback Function

    为了更好地理解回调函数的使用,我们来看一个具体的例子。假设我们需要实现一个动态链接库(DLL),该库提供两种排序算法——冒泡排序和快速排序,但具体的比较逻辑由调用者通过回调函数提供。 ```cpp typedef int ...

Global site tag (gtag.js) - Google Analytics