什么是回调函数(JS)

要知道回调函数是啥,首先要知道,回调函数是用来干嘛的:

回调函数是用来取一个异步操作的函数里的值的,也就是说:如果一个函数是异步的,这个函数不知道什么时候才能完成,也就拿不到这个函数里的值。
其中一个解决方法就是在这个异步函数中再放一个函数,当这个异步函数完成后执行,这个安插在异步函数里的函数被调用,将参数传出也就能打印出异步操作的结果了。
其他解决方法有如promise,await等操作,这里不讨论

那么具体怎么取呢,看代码:

  1  function pre(callback){
  2      var a="a"
  3      callback(a)
  4      console.log(1)
  5  }
  6
  7    pre(function(b){
  8      console.log(b)
  9     console.log(2)
  10 })

执行结果:
执行结果

首先我们可以从打印结果中清楚的看见,代码的执行顺序。

其次再看,声明pre()函数时有一个参数,这个参数是一个函数名,在执行pre函数时,传入了一个实打实的函数:

function(b){
        console.log(b)
    }

这是啥意思呢,也就是说这个匿名函数被传进去后callback函数被赋值,此时两个函数的内存地址一致:

//伪代码
callback(a) = function(b){
	console.log(b)
	console.log(2)
    }

上面的代码没有异步操作,那模拟一下异步操作,也是一样的:

    function pre(callback){
        setTimeout(function(){
    	var a="a"
        callback(a)
      },1000)
    }
  
      pre(function(b){
        console.log(b)
       console.log(2)
   })

一样可以得到,没有问题


而我们一般在写接口、发送ajax请求,亦或是操作数据库时最常见到回调函数:API让我们传入一个回调函数。

//node.js中操作mongodb
db.collection("user").insertOne({a:"a"}, (err, result)=>{
	if(err){
		return
	}
})

这段代码就相当于第一段代码的7.8.9.10行代码

就像上面简单的数据库插入操作,第一个参数是要插入的数据,第二个参数就是一个回调函数(数据库与网络请求操作都是异步的,所以需要用回调函数

给API传入一个函数,然后API就像第一段代码的1.2.3.4.5行,将参数给到err,result。当然了,API内部函数复杂得多,API就像一个看不见的黑盒子,代码在里面不断运转,最终将完成功能并将信息放在你传入的函数的参数里(err,result)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值