CallBack函数

定义

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
实现的机制

[1]定义一个回调函数;
[2]提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;
[3]当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。
使用优点

因为使用此函数可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个具有特定原型和限制条件的被调用函数。简而言之,回调函数就是允许用户把需要调用的方法的指针作为参数传递给一个函数,以便该函数在处理相似事件的时候可以灵活的使用不同的方法。
想知道回调函数在实际中有什么作用?先假设有这样一种情况:我们要编写一个库,它提供了某些排序算法的实现(如冒泡排序、快速排序、shell排序、shake排序等等),为了能让库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,能让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。
回调可用于通知机制。例如,有时要在A程序中设置一个计时器,每到一定时间,A程序会得到相应的通知,但通知机制的实现者对A程序一无所知。那么,就需一个具有特定原型的函数指针进行回调,通知A程序事件已经发生。实际上,API使用一个回调函数SetTimer()来通知计时器。如果没有提供回调函数,它还会把一个消息发往程序的消息队列。
另一个使用回调机制的API函数是EnumWindow(),它枚举屏幕上所有的顶层窗口,每个窗口都可以通过它调用另一个程序提供的函数,并传递窗口的处理程序。例如:如果被调用者返回一个值,就继续进行迭代;否则,退出。EnumWindow()并不关心被调用者在何处,也不关心被调用者用它传递的处理程序做了什么,它只关心返回值,因为基于返回值,它将继续执行或退出。
不管怎么说,回调函数是继承自C语言的。在C++中,应只在与C代码建立接口或与已有的回调接口打交道时,才使用回调函数。除了上述情况,在C++中应使用虚拟方法或仿函数(functor),而不是回调函数。

CallBack函数,布布扣,bubuko.com

时间: 2024-08-08 22:09:02

CallBack函数的相关文章

jQuery Callback 函数

Callback 函数在当前动画 100% 完成之后执行. 由于 JavaScript 语句(指令)是逐一执行的 - 按照次序,动画之后的语句可能会产生错误或页面冲突,因为动画还没有完成,为了避免这个情况,您可以以参数的形式添加 Callback 函数. 当动画 100% 完成后,即调用 Callback 函数. 典型的语法: $(selector).hide(speed,callback) callback参数是一个在 hide 操作完成后被执行的函数. 例如: $("p").hid

Web开发技术——JQuery6(Callback函数、Chaning)

jQuery Callback 函数 Callback 函数在当前动画 100% 完成之后执行. jQuery 动画的问题 许多 jQuery 函数涉及动画.这些函数也许会将 speed 或 duration 作为可选参数. 例子:$("p").hide("slow") speed 或 duration 参数可以设置许多不同的值,比如 "slow", "fast", "normal" 或毫秒. 实例 $(&

jQuery Callback函数的用法

在动画100%完成后,调用callback函数 语法如下 $(selector).hide(speed, callback); <!-- html部分 --> <button>点击我</button> <p>如果你想在一个涉及动画的函数之后来执行语句,请使用callback函数</p> //js部分 $("button").click(function(){ $("p").hide(1000,functio

什么叫CallBack函数,怎么用回调函数?

JQuery众多常用方法中很经常会用到回调函数, 理解好js callback函数定义及用法,我们就可以利用callback函数帮我们做很多事情啦! A callback is a function that is passed as an argument to another function and is executed after its parent function has completed. 这是js对callback函数的解析,意思是:callback函数是一个以参数形式传递

JavaScript强化教程——jQuery Callback 函数

本文为 H5EDU 机构官方 HTML5培训HTML5培训 教程,主要介绍:JavaScript强化教程 -- jQuery Callback 函数 Callback 函数在当前动画 100% 完成之后执行. jQuery 动画的问题许多 jQuery 函数涉及动画.这些函数也许会将 speed 或 duration 作为可选参数.例子:$("p").hide("slow")speed 或 duration 参数可以设置许多不同的值,比如 "slow&qu

c++将lambda作为callback函数

想用c++发送http_post请求,用到了libcurl. 想将其包装一下,因为默认http的响应结果是打印到stdout的,如果想将响应结果另外处理,需要自己定义一个callback函数. 考虑到我们想将功能包装起来,一个callback函数放到外面不太好,所以考虑使用lambda表达式. 以下是可以使用的形式: 1 #include <stdio.h> 2 #include <curl/curl.h> 3 #include <iostream> 4 5 using

jQuery 停止动画、jQuery Callback 函数、jQuery - Chaining

一.jQuery 停止动画 jQuery stop() 方法用于在动画或效果完成前对它们进行停止. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. $(selector).stop(stopAll,goToEnd); 可选的 stopAll 参数规定是否应该清除动画队列.默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行. 可选的 goToEnd 参数规定是否立即完成当前动画.默认是 false. 因此,默认地,stop() 会清除在被

javascript callback函数的理解与使用

最近做的一个项目中用到了callback函数,于是就研究了下总结下我对javascript callback的理解 首先从callback的字面翻译“回调” 可以理解这是一个函数被调用的机制 当我们遇到一个名词首先可能是百度谷歌搜索看官方是怎么解释的下面是维基百科对回调的定义: a callback is a piece of executable code that is passed as an argument to other code which is expected to call

python的callback函数原理

__getattribute__作用 """ class C(object): a = 'abc' def __getattribute__(self, *args, **kwargs): print("__getattribute__() is called") print args if args[0] == 'a': return object.__getattribute__(self, *args, **kwargs) else: print '