最近学习JavaScript的回调函数,将自己学习心得整理下,不一定是正确的。
回调函数概念:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.
中文解释是:函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b。那么这个过程就叫回调。
回调函数可以使用同步方式实现,也可以使用异步方式实现,通过回调函数定义可知回调主要针对异步方式的。
一,同步回调
function f1(callback){ callback(); console.log('f1'); } function f2(){ console.log('f2'); } f1(f2);
以上同步回调代码,执行结果如下:
同步回调流程中程序没有执行完f1后,再执行回调函数f2,这样与回调定义相矛盾。因此同步流程使用回调函数没有意义,同步流程不建议使用回调函数,
实现以上功能没必要使用回调,可以使用其他代码实现:
function f1(){ f2(); console.log('f1'); } function f2(){ console.log('f2'); } f1();
二,异步回调
你有事去隔壁寝室找同学,发现人不在,拜托与他同寝室的人,看到他回来时叫一下你,这就是回调。通俗的讲我们在执行完函数f1()后,在执行回调函数函数f2(),f2()功能类似通知主程序:f1()执行完毕,你可以进行其他操作。
function f1(callback){ setTimeout(function () { // f1的任务代码 callback(); }, 1000); } function f2(){ console.log('f1执行完成,你可以进行其他操作了'); } f1(f2);