回调函数
回调函数的定义为:传递一个函数A到另一个函数B中,由B调用A,我们就说函数A叫做回调函数。如果没有名称,就叫做匿名回调函数。
例1:Javascript中的回调函数
function invoke_and_add(a,b){ return a()+b(); } function one(){ return 1; } function two(){ return 2; } invoke_and_add(one ,two);
例2:Javascript中的匿名回调函数
invoke_and_add(function(){return 1;},function(){return 2;})
适用于:
1. 通过一个统一接口实现不同的内容
回调函数的使用在C++中相当于函数指针
int TVPrice(int price) { printf("The price of the TV is %d. \n", price); return 0; } int PCPrice(int price) { printf("The price of the PC is %d. \n", price); return 0; } void Caller(int n, int (*ptr)())//指向函数的指针作函数参数,第一个参数是为指向函数的指针服务的, { //不能写成void Caller(int (*ptr)(int n)) (*ptr)(n); } int main() { Caller(3000, TVPrice); Caller(5000, PCPrice); return 0; }
2. 异步调用
A先告诉B去点亮,然后自己点亮。B的点亮操作并不会阻塞A。
function lightUp(A, callback){ callback(); A.lightUp(); } function callback(){ B.lightUp(); }
***同步调用时这样的***
var temp = false; while(!temp){ temp = wait(A.lightUp()); } B.lightUp();