事件驅(qū)動模型
創(chuàng)新互聯(lián)專注于企業(yè)網(wǎng)絡(luò)營銷推廣、網(wǎng)站重做改版、美蘭網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站定制開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為美蘭等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
現(xiàn)在我們來看看nodejs中的事件驅(qū)動和異步I/O是如何實(shí)現(xiàn)的.
nodejs是單線程(single thread)運(yùn)行的,通過一個(gè)事件循環(huán)(event-loop)來循環(huán)取出消息隊(duì)列(event-queue)中的消息進(jìn)行處理,處理過程基本上就是去調(diào)用該消息對應(yīng)的回調(diào)函數(shù)。消息隊(duì)列就是當(dāng)一個(gè)事件狀態(tài)發(fā)生變化時(shí),就將一個(gè)消息壓入隊(duì)列中。
nodejs的時(shí)間驅(qū)動模型一般要注意下面幾個(gè)點(diǎn):
下面我們從一個(gè)簡單的js文件入手,來看看 nodejs是如何執(zhí)行的。
var fs = require("fs"); var debug = require('debug')('example1'); debug("begin"); fs.readFile('package.json','utf-8',function(err,data){ if(err) debug(err); else debug("get file content"); }); setTimeout(function(){ debug("timeout2"); }); debug('end'); // 運(yùn)行到這里之前,事件循環(huán)是暫停的
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。