描述一下:什么是回调?

196 阅读2分钟

前言

 面试官  :描述一下回调
 我:。。。

第一次被这么问,平时注意promise、async/await、Generator、回调地狱啥的,还没真正去理清楚什么是回调呀~~ 立马回来查资料,总结一下。

什么是回调?

A callback is a function that is passed as an argument to another function and is executed after its parent function has completed
--Goolge

简单来说,回调就是一个函数,并且作为参数传递给另一个函数A,并在函数A内容执行完之后执行。这样看来,回调也是闭包,函数A是高阶函数(高阶函数是一个函数,它接收函数作为参数或将函数作为输出返回)。

$('#btn').on('click', function(){}) // 这个func就是回调

function foo (callback) {
    alert('xxx');
    callback();// 回调
}

为什么需要回调?

可以确保代码在其他代码执行完毕之后再执行。例如,请求接口的函数用回调,可以确保数据获取到,才会执行一些数据处理的操作。

回调带来的问题以及解决

  • JavaScript异步演变:callback->promise->Generator->async/await 因为回调是将函数作为参数传进去的,如果一个回调里面又传进一个回调,嵌套很多层,就形成了回调地狱。 所以就出现了异步解决方案:promise-、Generator、async/await

补充

刷b站刷到一位大佬做的视频,这里做一些补充跟总结,有兴趣可以看看视频哦(【一听就懂】 回调函数是个啥?

1、如果一个函数的名字可以做为参数使用,那么这个函数就可以叫做回调函数。(之前以为回调函数解释起来是很复杂的,其实这个函数没有什么特别之处,只要记住,只是被当做参数使用而已)

2、作用:适当时机发通知、让代码更加灵活、提高运行效率