js回调函数的理解

一、解释

官方理解:回调是一个函数,它作为参数传递给另一个函数,并在其父函数完成后执行。
个人理解:回调,就是回头调用的意思。主函数的事先干完,回头再调用传进来的那个函数。

二、使用场景

Javascript是单线程的,代码是至上而下一条线执行下去,但是有时候我们需要等到一个操作结束之后再进行下一个操作,这时候就需要用到回调函数。所以回调函数一般都用在一些比较耗时操作上面。比如ajax请求,比如处理文件等。
假如你发起一个网络请求,需要在请求到数据的时候再进行数据处理操作.如果不用回调的话,下一步操作怎么进行?如果按照一般的代码,有可能请求的数据还没返回,数据处理操作已经执行完了!

三、案例

Demo1:

//定义主函数,回调函数作为参数
function A(callback) {//callback是形参或者说是指针(地址)
    callback(); 
    console.log('我是主函数'); 
}
function B(){//定义回调函数
    setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作 
}
A(B);//调用主函数,将函数B传进去

//我是主函数
//我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。
定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。
函数(callback)只有在函数名后加上()才代表它要解释执行,所以这里的callback指代的是回调函数的定义,而callback()才是对回调函数的调用执行。
Demo2:

//jQuery中使用回调函数简单普遍的例子:
$("#btn_1").click(function() {
  alert("Btn 1 Clicked");
}); 

四、同步、异步回调函数的执行情况

回调函数的执行时机:
同步执行的情况,回调函数一般是最后执行
异步执行的情况(ajax),回调函数不一定会执行

注释
同步指的是一次只能完成一件任务。如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推。
异步指的是每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。
当Js执行到异步任务后,会将异步任务交给浏览器进行执行,当执行有结果时会把异步任务的回调函数插入待处理队列的队尾。

四、深入理解回调函数

回调函数是从一个叫函数式编程的编程范式中衍生出来的概念。简单来说,函数式编程就是使用函数作为变量。

五、小结

其实回调函数就是保证主程序的运行不受影响。

参考
Js的同步异步以及回调函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值