HTML概念進(jìn)階
- 什么是回調(diào)?
知乎:你到一個(gè)商店買東西前方,剛好你要的東西沒有貨滓侍,于是你在店員那里留下了你的電話蒋川,過了幾天店里有貨了,店員就打了你的電話撩笆,然后你接到電話后就到店里去取了貨捺球。在這個(gè)例子里,你的電話號(hào)碼就叫回調(diào)函數(shù)夕冲,你把電話留給店員就叫登記回調(diào)函數(shù)氮兵,店里后來有貨了叫做觸發(fā)了回調(diào)關(guān)聯(lián)的事件,店員給你打電話叫做調(diào)用回調(diào)函數(shù)歹鱼,你到店里去取貨叫做響應(yīng)回調(diào)事件泣栈。回答完畢弥姻。
作者:常溪玲
鏈接:https://www.zhihu.com/question/19801131/answer/13005983
來源:知乎
function learn(something){
console.log(something);
}
function we(callback, something){
something+= ' is cool';
callback (something);
}
//回調(diào)的兩種寫法(具名與匿名)
we(learn, 'Nodejs');
we(function(something){
console.log(something);
},'jade');
- 同步/異步
同步:后一個(gè)任務(wù)等待前一個(gè)結(jié)束才能執(zhí)行
異步:無等待
- 什么是I/O南片?
- 磁盤的寫入和讀取
- 什么是單線程/多線程
- 一次只能走一條線
- 多線程
- 什么是事件
- 一個(gè)觸發(fā)動(dòng)作(例如點(diǎn)擊按鈕)
- 什么是事件驅(qū)動(dòng)?
- 一個(gè)觸發(fā)動(dòng)作引起的操作(例如點(diǎn)擊按鈕后彈出一個(gè)對(duì)話框)
- 什么是基于事件驅(qū)動(dòng)的回調(diào)
- 為了某個(gè)事件注冊(cè)了回調(diào)函數(shù)庭敦,但是這個(gè)回調(diào)函數(shù)不是馬上執(zhí)行铃绒,只有當(dāng)事件發(fā)生的時(shí)候,才會(huì)調(diào)用回調(diào)函數(shù)螺捐,這種函數(shù)執(zhí)行的方式叫做事件驅(qū)動(dòng)~這種注冊(cè)回調(diào)就是基于事件驅(qū)動(dòng)的回調(diào)颠悬,如果這些回調(diào)和異步I/O(數(shù)據(jù)寫入、讀取)操作有關(guān)定血,可以看作是基于回調(diào)的異步I/O赔癌,只不過這種回調(diào)在nodejs中是有事件來驅(qū)動(dòng)的
- 什么是事件循環(huán)
-事件循環(huán)Eventloop,倘若有大量的異步操作,一些I/O的耗時(shí)操作澜沟,甚至是一些定時(shí)器控制的延時(shí)操作灾票,它們完成的時(shí)候都要調(diào)用相應(yīng)的回調(diào)函數(shù),從而來完成一些密集的任務(wù)茫虽,而又不會(huì)阻塞整個(gè)程序執(zhí)行的流程刊苍,此時(shí)需要一種機(jī)制來管理既们,這種機(jī)制叫做事件循環(huán).
總而言之就是:管理大量異步操作的機(jī)制叫做事件循環(huán) - 什么是阻塞/非阻塞
- 前一個(gè)任務(wù)沒有執(zhí)行就會(huì)一直等待
- 前一個(gè)程序未執(zhí)行完時(shí)可以掛起,繼續(xù)執(zhí)行其他程序正什,等到使用時(shí)再執(zhí)行
- Event Loop
- 回調(diào)函數(shù)隊(duì)列啥纸。異步執(zhí)行的函數(shù)會(huì)被壓入這個(gè)隊(duì)列; 隊(duì)列被循環(huán)查詢。