程序可以分为两种:「非事件驱动」型程序、「事件驱动(event-driven)」型程序。
• 非事件驱动型程序
这类程序,遵循这样一个流程:启动程序 -> 执行程序(代码) -> 退出程序。程序会在执行完所有代码后,立刻退出,中途不会有任何事件发生(除非有bug)。
• 事件驱动型程序
这类程序,遵循这样一个流程:启动程序 -> 等待事件(event) -> 事件被触发 -> 执行callback(回调) -> 继续等待事件(event) -> 人为退出程序。
现在的应用几乎都是这种类型,其中回调是一个函数。例如,用淘宝APP帮手机充值,一打开APP,它并不会马上跳到充值页面,而是要等待点击事件,当点击了充值的按钮,才会跳到充值页面(执行了callback)。程序员先把用户点了按钮要做的事情先写好,注册给系统。等用户点击到按钮的时候,系统就会回调相应的代码。
这里的「事件(event)」是非常宽泛的,可以是使用者的一次点击、系统的一次通知、服务器返回的一次数据、蓝牙外设连接成功后发送给手机的一条指令等等。
另外,回调的概念也在以下情况中使用。在异步任务执行的过程中,首先你要把自己的信息给异步任务执行者(称为注册),等执行完成的时候,执行者可以通过这些信息找到你,并给你一个通知,别人找到你给你通知的过程就叫做回调。这里把回调抽象成先把要做的事情注册给别人,等条件满足的时候别人再回过头来调用你的模型。
——部分内容整理自网络——
网友评论