python基礎(chǔ)函數(shù)大全 callback回調(diào)函數(shù),怎么用,為什么要用?
callback回調(diào)函數(shù),怎么用,為什么要用?沒接觸過嵌入式開發(fā),但稍懂c語言,勉強(qiáng)答一波。舉個(gè)實(shí)用性的例子,例如在瀏覽器中對(duì)百度發(fā)起搜索請(qǐng)求,大概是如下這樣一個(gè)場(chǎng)景:CPU:你好!百度,我想問一下今
callback回調(diào)函數(shù),怎么用,為什么要用?
沒接觸過嵌入式開發(fā),但稍懂c語言,勉強(qiáng)答一波。
舉個(gè)實(shí)用性的例子,例如在瀏覽器中對(duì)百度發(fā)起搜索請(qǐng)求,大概是如下這樣一個(gè)場(chǎng)景:
CPU:你好!百度,我想問一下今天天氣好嗎?
如果說CPU問這句話用時(shí)一秒,那么,讓我們站在CPU的角度來看,等待百度的回復(fù),可能相當(dāng)于等待了一年時(shí)間,因?yàn)镃PU的處理速度相對(duì)于網(wǎng)絡(luò)速度來說實(shí)在是太快太快了。
那么再回到CPU的角度,在等待網(wǎng)絡(luò)請(qǐng)求的那一段很長(zhǎng)很長(zhǎng)的時(shí)間里面,它完全有空檔去完成其他任務(wù)。
那剛剛發(fā)起的網(wǎng)絡(luò)請(qǐng)求怎么辦呢?百度的回復(fù)有可能視乎網(wǎng)絡(luò)介質(zhì)的不同有快慢之分,可能快也可能慢,反正不能準(zhǔn)確地知道它什么時(shí)候會(huì)到來。但是CPU在這段時(shí)間的空擋是肯定不能浪費(fèi)啊!
這時(shí)候,聰明的工程師就跟CPU說,在發(fā)完這個(gè)請(qǐng)求以后,你就放心去完成其他任務(wù)吧!當(dāng)百度的回復(fù)到了,你會(huì)收到短信的,到時(shí)候你手機(jī)一響,就來處理百度的回復(fù),并反饋給用戶看吧!
那么,上面工程師所提到的“當(dāng)百度的回復(fù)到來后,會(huì)給CPU發(fā)短信”,就是提問主所問到的回調(diào)函數(shù)了。
很多時(shí)候,回調(diào)就是為了告訴你,某項(xiàng)任務(wù)完成了,例如將文件寫入硬盤完成了,網(wǎng)絡(luò)請(qǐng)求接受到響應(yīng)了,將π計(jì)算到30萬位這項(xiàng)任務(wù)完成了…
希望能對(duì)你有幫助!
什么是回調(diào)函數(shù)?
普通函數(shù)與回調(diào)函數(shù)主要是在調(diào)用方式上有區(qū)別:
1、對(duì)普通函數(shù)的調(diào)用:調(diào)用程序發(fā)出對(duì)普通函數(shù)的調(diào)用后,程序執(zhí)行立即轉(zhuǎn)向被調(diào)用函數(shù)執(zhí)行,直到被調(diào)用函數(shù)執(zhí)行完畢后,再返回調(diào)用程序繼續(xù)執(zhí)行。從發(fā)出調(diào)用的程序的角度看,這個(gè)過程為“調(diào)用-->等待被調(diào)用函數(shù)執(zhí)行完畢-->繼續(xù)執(zhí)行”。
2、對(duì)回調(diào)函數(shù)調(diào)用:調(diào)用程序發(fā)出對(duì)回調(diào)函數(shù)的調(diào)用后,不等函數(shù)執(zhí)行完畢,立即返回并繼續(xù)執(zhí)行。這樣,調(diào)用程序執(zhí)和被調(diào)用函數(shù)同時(shí)在執(zhí)行。當(dāng)被調(diào)函數(shù)執(zhí)行完畢后,被調(diào)函數(shù)會(huì)反過來調(diào)用某個(gè)事先指定函數(shù),以通知調(diào)用程序:函數(shù)調(diào)用結(jié)束。這個(gè)過程稱為回調(diào)(Callback),這正是回調(diào)函數(shù)名稱的由來。擴(kuò)展資料