程序可以分為兩種:「非事件驅(qū)動」型程序残邀、「事件驅(qū)動(event-driven)」型程序。
? 非事件驅(qū)動型程序
這類程序暇检,遵循這樣一個流程:啟動程序 -> 執(zhí)行程序(代碼) -> 退出程序晤硕。程序會在執(zhí)行完所有代碼后惕虑,立刻退出,中途不會有任何事件發(fā)生(除非有bug)睛挚。
? 事件驅(qū)動型程序
這類程序邪蛔,遵循這樣一個流程:啟動程序 -> 等待事件(event) -> 事件被觸發(fā) -> 執(zhí)行callback(回調(diào)) -> 繼續(xù)等待事件(event) -> 人為退出程序。
現(xiàn)在的應用幾乎都是這種類型扎狱,其中回調(diào)是一個函數(shù)侧到。例如勃教,用淘寶APP幫手機充值,一打開APP匠抗,它并不會馬上跳到充值頁面故源,而是要等待點擊事件,當點擊了充值的按鈕汞贸,才會跳到充值頁面(執(zhí)行了callback)绳军。程序員先把用戶點了按鈕要做的事情先寫好,注冊給系統(tǒng)著蛙。等用戶點擊到按鈕的時候删铃,系統(tǒng)就會回調(diào)相應的代碼。
這里的「事件(event)」是非常寬泛的踏堡,可以是使用者的一次點擊猎唁、系統(tǒng)的一次通知、服務器返回的一次數(shù)據(jù)顷蟆、藍牙外設(shè)連接成功后發(fā)送給手機的一條指令等等诫隅。
另外,回調(diào)的概念也在以下情況中使用帐偎。在異步任務執(zhí)行的過程中逐纬,首先你要把自己的信息給異步任務執(zhí)行者(稱為注冊),等執(zhí)行完成的時候削樊,執(zhí)行者可以通過這些信息找到你豁生,并給你一個通知,別人找到你給你通知的過程就叫做回調(diào)漫贞。這里把回調(diào)抽象成先把要做的事情注冊給別人甸箱,等條件滿足的時候別人再回過頭來調(diào)用你的模型。
——部分內(nèi)容整理自網(wǎng)絡(luò)——