所谓回调,就是客户程序C调用服务程序S中的某个函数A,而后S又在某个时候反过来调用C中的某个函数B,对于C来讲,这个B便叫作回调函数。例如Win32下的窗口过程函数就是一个典型的回调函数。通常说来,C不会本身调用B,C提供B的目的就是让S来调用它,并且是C不得不提供。因为S并不知道C提供的B姓甚名谁,因此S会约定B的接口规范(函数原型),而后由C提早经过S的一个函数R告诉S本身将要使用B函数,这个过程称为回调函数的注册,R称为注册函数。Web Service以及Java的RMI都用到回调机制,能够访问远程服务器程序。编程
下面举个通俗的例子:
某天,我打电话向你请教问题,固然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,因而咱们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,个人手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果即是一个“回调”过程;个人手机号码必须在之前告诉你,这即是注册回调函数;个人手机号码应该有效而且手机可以接收到你的呼叫,这是回调函数必须符合接口规范。服务器