回调函数 callback 的实现原理是什么?

Posted ybhuangfugui

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了回调函数 callback 的实现原理是什么?相关的知识,希望对你有一定的参考价值。

其实回调函数和普通函数没有本质的区别。

首先让我们来看看普通的函数调用,假设我们在A函数中调用函数func:

void A() {
   ...
   func();
   ...
}

想一想,你怎么知道可以调用func呢?哦,原来func是你自己定义的:

void func() {
  blablabla;
}

这很简单吧,现在假设你编写的这段代码无比之牛逼,全世界的程序员都无比疯狂的想引入到自己的项目中,这时你会把A函数编写成一个库供全世界的码农使用。

但此时所有人都发现一个问题,那就是他们都想在A函数中的某个特定点上执行一段自己的代码,作为这个库的创作者你可能会这样实现:

void A() {
   ...
 
   // 特定点
   
   if (张三) {
     funcA();
   } else if (李四) {
     funcB();
   }
   ...
}

假设全世界有一千万码农,那你是不是要有一千万个if else。。。想想这样的代码就很刺激有没有!

更好的办法是什么呢?把函数也当做变量!你可以这样定义A函数:

void A(func f) {
   ...
   f();
   ...
}

任何一个码农在调用你的A函数时传入一个函数变量,A函数在合适的时机调用你传入的函数变量,从而节省了一千万行代码

为了让这个过程更加难懂一些,这个函数变量起了一个无比难懂的称呼:回调函数。

现在你应该明白了回调函数是怎么一回事了吧,相比回调函数来说我更愿意将其看做函数变量

以上就是回调函数的基本原理,有想看更详细版本的请参考这里

以上仅仅是回调函数的一种用途,回调函数在基于事件驱动编程以及异步编程时更是必备的,关于事件驱动编程你可以参考这里,GUI编程的同学对此肯定很熟悉。

希望这里的讲解对大家理解回调函数有所帮助。

------------ END ------------


●嵌入式专栏精选教程

●精选汇总 | ST工具、下载编程工具

●精选汇总 | 嵌入式软件设计与开发

●精选汇总 | STM32、MCU、单片机

迎关注我的公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。

欢迎关注我的视频号:

点击“阅读原文”查看更多分享,欢迎点分享、收藏、点赞、在看。

以上是关于回调函数 callback 的实现原理是什么?的主要内容,如果未能解决你的问题,请参考以下文章

jquery中的回调函数怎么用

关于js的callback回调函数的理解

但回调方法出错 请检查自定义load回调函数是啥

回调函数(callback)

JavaScript中的回调函数(callback)

Nodejs的运行原理-函数回调篇