回調(diào)就是將后續(xù)邏輯封裝成起始函數(shù)的參數(shù),逐層嵌套得函數(shù)。
同步:發(fā)送數(shù)據(jù)后,等待回響應(yīng)后,才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式
異步:發(fā)送數(shù)據(jù)后,不等響應(yīng),接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式
文件系統(tǒng)里面 :
磁盤的寫入(in) 磁盤的讀取(out)
一次只能執(zhí)行一個(gè)程序叫做單線程
一次能執(zhí)行多個(gè)程序叫做多線程
阻塞:前一個(gè)程序未執(zhí)行完,就得一直等待
非阻塞:前一個(gè)程序未執(zhí)行完時(shí)可以掛起,繼續(xù)執(zhí)行其他程序,等到使用時(shí)再執(zhí)行
一個(gè)觸發(fā)動作(例如點(diǎn)擊按鈕)
一個(gè)觸發(fā)動作引起的操作(例如點(diǎn)擊按鈕后彈出一個(gè)對話框)
為了某個(gè)事件注冊了回調(diào)函數(shù),但是這個(gè)回調(diào)函數(shù)不是馬上執(zhí)行,
只有當(dāng)事件發(fā)生的時(shí)候,才會調(diào)用回調(diào)用函數(shù),這種函數(shù)執(zhí)行的方式叫做事件驅(qū)動。
這種注冊回調(diào)就是基于事件驅(qū)動的回調(diào)。
如果這些回調(diào)和異步I/O(數(shù)據(jù)寫入、讀取)操作相關(guān),可以看作是基于回調(diào)的異步I/O。
只不過這種回調(diào)在nodejs中是由事件來驅(qū)動的
事件循環(huán)Eventloop,倘若有大量的異步操作,如一些I/O的耗時(shí)操作,甚至是一些定時(shí)器控制的延時(shí)操作,
它們完成的時(shí)候都要調(diào)用相應(yīng)的回調(diào)函數(shù),而從完成一些密集的任務(wù),而又不會阻塞整個(gè)程序執(zhí)行的流程,此時(shí)需要一種機(jī)制來管理,這種機(jī)制叫做事件循環(huán)
總而言之,管理大量異步操作的機(jī)制叫做事件循環(huán)。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com