JavaScript中的回调函数初探

本文详细介绍了JavaScript中的回调函数概念及用途,通过实例演示了如何利用回调函数提高代码灵活性,特别是处理异步操作时的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先看一下js中回调函数的定义:
函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称(函数表达式),就叫做匿名回调函数。
具体在js中是这么用的

function fn(arg1, arg2, callback){
 var num = Math.ceil(Math.random() * (arg1 - arg2) + arg2);
 callback(num);  //传递结果
}

fn(10, 20, function(num){
 console.log("Callback called! Num: " + num); 
});    //结果为10和20之间的随机数 

这里面的callback就是回调函数。
为什么要这么用?写成下面这样不更方便吗?

function fn(arg1, arg2){
 var num = Math.ceil(Math.random() * (arg1 - arg2) + arg2);
 console.log("Callback called! Num: " + num); 
}

fn(10, 20);    //结果为10和20之间的随机数 

如果你直接在函数a里调用的话,那么这个回调函数就被限制死了。但是使用函数做参数就有下面的好处:当你a(b)的时候函数b就成了回调函数,而你还可以a(c)这个时候,函数c就成了回调函数。如果你写成了function a(){…;b();}就失去了变量的灵活性。
不要给回调函数贴标签,回调函数就是我们刚才的一种函数作为参数的形式,在处理数据请求是,我们通常有很多种情况,成功?失败?无响应?针对各种情况我们的函数需要有一定的处理操作,但是如果我们不使用回调函数,这个处理操作就定死了,那么Ajax的使用就太缺乏灵活性了,Ajax给了回调的操作处理就可以实现不同的反馈。

f1();
f2();

上面2个函数按顺序执行,f2()需要f1()的结果才能执行,如果将f2()作为f1()的回调函数,然后给f1()中耗时的代码加上延时,就不会阻塞进程,而回调就是为了让f2()在f1()之后进行。

  function f1(callback){
    setTimeout(function () {
      // f1的任务代码
      callback();
    }, 1000);
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值