什么是回调

程序可以分为两种:「非事件驱动」型程序、「事件驱动(event-driven)」型程序。

• 非事件驱动型程序

这类程序,遵循这样一个流程:启动程序 -> 执行程序(代码) -> 退出程序。程序会在执行完所有代码后,立刻退出,中途不会有任何事件发生(除非有bug)。

• 事件驱动型程序

这类程序,遵循这样一个流程:启动程序 -> 等待事件(event) -> 事件被触发 -> 执行callback(回调) -> 继续等待事件(event) -> 人为退出程序。

现在的应用几乎都是这种类型,其中回调是一个函数。例如,用淘宝APP帮手机充值,一打开APP,它并不会马上跳到充值页面,而是要等待点击事件,当点击了充值的按钮,才会跳到充值页面(执行了callback)。程序员先把用户点了按钮要做的事情先写好,注册给系统。等用户点击到按钮的时候,系统就会回调相应的代码。

这里的「事件(event)」是非常宽泛的,可以是使用者的一次点击、系统的一次通知、服务器返回的一次数据、蓝牙外设连接成功后发送给手机的一条指令等等。

另外,回调的概念也在以下情况中使用。在异步任务执行的过程中,首先你要把自己的信息给异步任务执行者(称为注册),等执行完成的时候,执行者可以通过这些信息找到你,并给你一个通知,别人找到你给你通知的过程就叫做回调。这里把回调抽象成先把要做的事情注册给别人,等条件满足的时候别人再回过头来调用你的模型。


——部分内容整理自网络——

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回调函数是什么 “我先回家,到了给你发短信。” 如果“我先回家”是函数goHome,那么“到了给你发短信”,这个发...
    anonymous66阅读 4,709评论 0 9
  • 本文主要参考:《Object-C 编程 Big Nerd Ranch Guide》一书第24章 本文适读对象: 想...
    AntonyWong阅读 27,636评论 16 110
  • 操作过程 1.裁切一长条0.4mm(26 Ga.)厚的银片,从中间对折,并用装有护嘴的台钳把对折的银片夹扁,然后取...
    D3舍阅读 3,203评论 0 1
  • 今天确实没有精力再写文了。 简单交代一下两天不断在脑海中浮现,或许也是留意积累,构思的写作素材。 老高的二胎生活,...
    迷雾中奔跑阅读 1,449评论 0 0
  • 你接起电话,问我怎么了么,我在另一头听你的声音,听你最后留在我脑海里的声音,但我不回应。我会让手里远离我的头,不让...
    Cyriy阅读 1,001评论 0 0