这样说可能简单些:回调函数是一个作为参数传给另一个函数的函数,另一个函数里面可以自由决定什么时候执行回调函数。比如当ajax请求完成时,会执行你写的回调函数,又比如侦测到用户点击了按钮,会执行你写的回调函数。
function caonima(a,b,callback) { var c = a+b; // 当前函数执行得到了一个结果 alert(c); callback(c);//这个就是传入的回调函数,外部传入的函数,使用当前函数产生的结果,做些事情 } // 定义了一个函数,用于回掉 function haha(c) { alert('这是回调函数获取到的值:'+c); alert('这就是我这个回调函数干的事情'); } var a = 1; var b = 2;
//1: caonima(a,b,haha); // 传入haha回调函数
//2: caonima(a,b,function(c) { alert('这是传入的匿名回调函数'); });
回调有同步回调和异步回调:
同步回调就是当你函数里东西执行完了之后,再去执行你传入的回调函数。
异步回调一般是指,你这个函数需要执行很久时间,这个时候为了避免堵塞,可以允许你传入的回调函数不需要等待,而是继续先执行
function myLogicSync(callback){ callback();//同步回调 } function myLogicAsync(callback){ setTimeout(function(){ callback();//异步回调 }); }