美文网首页
回调函数的理解精髓

回调函数的理解精髓

作者: 橘子粟粟 | 来源:发表于2020-05-21 10:52 被阅读0次

精髓:回调函数是一种基于相互呼叫的三方游戏 !!!

首先先明确参与三方,分别是初始函数回调函数中间函数
通常其他博客上所说的回调关系只存在于回调函数与中间函数之间,但是这样的理解还不够全面,准确来说应该是一种三方联动的关系。

三方联动

传统的回调机制可以归纳为中间函数与回调函数之间If you call me with something,I will call you with something,如下图所示(摘自维基百科)。而起始函数实际上的作用是就是调用中间函数进而引发回调机制。

回调机制

我们可以举个例子理解他们之间的关系:一个顾客进入了一家旅馆,这家旅馆提供唤醒服务,但是如果顾客想调用这个使用服务服务,则必须事先通知旅馆叫醒自己的方式,旅馆获知顾客所要求的唤醒方式后,会在某个时间段用该种方式唤醒他

在上面这个例子中,顾客进入旅馆相当于初始函数调用了中间函数,旅馆提供的唤醒服务相当于中间函数,具体的唤醒方式相当于回调函数。顾客通知旅馆唤醒自己的方式相当于call to 过程,旅馆最终唤醒顾客相当于call back 过程。


下面使用程序理解一下函数的回调机制

#回调函数1
#生成一个2k形式的偶数
def double(x):
    return x * 2
    
#回调函数2
#生成一个4k形式的偶数
def quadruple(x):
    return x * 4
from even import *

#中间函数
#接受一个生成偶数的函数作为参数
#返回一个奇数
def getOddNumber(k, getEvenNumber):
    return 1 + getEvenNumber(k)
    
#起始函数,这里是程序的主函数
def main():    
    k = 1
    #当需要生成一个2k+1形式的奇数时
    i = getOddNumber(k, double)
    print(i)
    #当需要一个4k+1形式的奇数时
    i = getOddNumber(k, quadruple)
    print(i)
    #当需要一个8k+1形式的奇数时
    i = getOddNumber(k, lambda x: x * 8)
    print(i)
    
if __name__ == "__main__":
    main()

补充一个网友有趣的解释

你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。回答完毕。

参考:
https://www.zhihu.com/question/19801131/answer/27459821
https://www.zhihu.com/question/19801131/answer/13005983

相关文章

  • 回调函数的理解精髓

    精髓:回调函数是一种基于相互呼叫的三方游戏 !!! 首先先明确参与三方,分别是初始函数,回调函数,中间函数通常其他...

  • JavaScript - 回调函数

    这里我想跟你聊聊我理解的回调函数(callback)。 回调函数,我觉得可以理解成作为参数传递的函数对象。因为在 ...

  • 理解回调函数

    最近经常看到“回调函数”这个概念,但不是很理解。为了弄明白回调函数,提出了以下三个问题:1.什么是回调函数 回调函...

  • JS 回调函数(callback)和递归函数(recursive

    有很多人不理解回调函数和递归函数,我们在这里研究一下。(本文仅适合新人) 什么是回调函数,什么是递归函数 回调函数...

  • 回调函数的理解

    对使用回调函数目的理解 让一个已经写好的程序A调用我们自己写的程序B的某个方法。比如,A是一个封装好的加减法计算器...

  • JavaScript函数_08回调函数

    回调函数 回调函数(回调),当我们把某个函数作为参数传递给另一个函数的时候,这个函数就是回调函数 回调函数的基本写...

  • 回调函数callback

    回调函数callback 回调函数:简而言之就是某个特定事件发生时被指定调用的函数。运行机制简单理解就是:现在有主...

  • Promise

    回调 把一个函数A传给另一个函数B调用,那么A就是回调函数。 回调地狱 回调套回调套回调套回调套回调套回调套回调....

  • 回调函数再理解

    什么是回调函数 精妙比喻:回调函数还真有点像您随身带的BP机:告诉别人号码,在它有事情时Call您回调用于层间协作...

  • 简单理解回调函数

    什么函数才是回调函数?你自己的定义的你没有调用但是最终它还是执行了(在某个时刻或某个条件下) 常见的回调函数?do...

网友评论

      本文标题:回调函数的理解精髓

      本文链接:https://www.haomeiwen.com/subject/cltzohtx.html