js基础 回调函数

回调函数

什么是回调函数呢?其实就是将函数a作为函数b的参数来使用,这就是回调函数,也就是先执行函数a,完事儿后执行函数b。下面就是一个简单的回调函数例子,在函数a里面调用函数b,执行完函数a然后执行函数b,也就是先弹出111,再弹出222。

function a(cb,a){
    alert('111');
    cb(a);//这里是将回调函数的参数作为与回调函数同等级的参数进行传递,就是函数b里面的参数e和函数a里面的参数a是一样的。
}
function b(e){
    alert(e);
}
a(b,"222");

//也可以这么写,看个人喜好
function a(a,cb){//a('111',function(e){alert(e);})   '111' => a; function(e){alert(e) => cb。
    alert(a);
    var zhi = "222";
    cb(zhi);
}
a('111',function(e){//cb(zhi) => cb(e)
    alert(e);
})

我们在上面说到先执行完函数a然后执行函数b,这么理解也对,我们看下面的代码。

function a(cb,e){
    cb(e);//我们可以看到回调函数是排在队列前的
    alert("one");//我们的主函数排在回调函数后面
}
function b(e){
    alert(e)
}
a(b,'two');//执行后回依次弹出 two 和  one 。

/*注意:上下两段注释一个 分开看*/

function a(cb,e){
    cb(e);//我们可以看到回调函数是排在队列前的
    alert("one");//我们的主函数排在回调函数后面
}
function b(e){
    setTimeout(function(){//这里模拟一下耗费时间的操作
    alert(e)
},2000)
}
a(b,'two');//执行后回依次弹出 one 和  two 。

/*上面代码基本一样,但是执行的顺序却不一样,我们要知道js是单线程的,所以执行代码都是一行一行的在

队列中执行,如果在队列中有一个需要时间很长才能执行完,那下面的也都跟着等待,而这时我们用回调函数就

不用非得排队执行了。所以在第二段代码会先执行函数函数a(主函数),而不用等函数b(回调函数)执行完再执行。*/

如果上面说的不明白的话,可以这么理解,js会按照队列中的代码运行(从上到下),当回调函数执行时间太长的时候,主函数也可以接着向下执行队列中的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。

有哪里不对的地方,希望各路大神帮忙指点一下!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值