Node IO 函數(shù)編程在Node的應(yīng)用

什么是IO恨溜?
訪(fǎng)問(wèn)網(wǎng)站符衔,輸入地址吐出一個(gè)IO

前端通過(guò)異步IO可以消除UI堵塞
假設(shè)請(qǐng)求資源A的時(shí)間為M,請(qǐng)求資源B的時(shí)間為N糟袁。那么同步的請(qǐng)求耗時(shí)為M+NN,如果采用異步方式占用時(shí)間為Max(M,N)
隨著業(yè)務(wù)的復(fù)雜判族,會(huì)引入分布式系統(tǒng),時(shí)間回線(xiàn)性的增加项戴,M+N+... 和Max(M形帮,N···),這會(huì)放大同步和異步之間的詫異
I/O是昂貴的周叮,分布式I/O是更昂貴的
CPU時(shí)鐘周期:1/cpu主頻
根據(jù)情況選擇同步還是異步辩撑,沒(méi)有誰(shuí)最好;它們是相輔相成的仿耽。

NodeJS適用于IO密集型合冀,不適用CPU密集型

node雖然是單線(xiàn)程,但是有輔助線(xiàn)程项贺,
Libuv(需要會(huì)C的知識(shí))
封裝了window君躺、Linux操作系統(tǒng),用V8 node寫(xiě)的一個(gè)庫(kù)开缎。


image.png

有幾個(gè)特殊的API
1棕叫、setTimeout\setInterval 線(xiàn)程池不參與
2、process.nextTick() 實(shí)現(xiàn)類(lèi)似
setTimeout(function(){},0);每次調(diào)用放在隊(duì)列中啥箭,在下一輪循環(huán)中取出
3谍珊、setImmediate();比process.nextTick()優(yōu)先級(jí)低
4、Node如何實(shí)現(xiàn)一個(gè)Sleep?
async function test(){
console.log("hello");
await sleep(1000);
console.log("world!");
}
function sleep(ms){
return new Promise(resolve => setTimeout(resolve,ms))
}
test();

函數(shù)式編程在Node中的應(yīng)用
1急侥、高階函數(shù):可以將函數(shù)作為輸入或者返回值砌滞,形成一種后續(xù)傳遞風(fēng)格的結(jié)果接受方式,而非單一的返回值形式坏怪。后續(xù)傳遞風(fēng)格的程序?qū)⒑瘮?shù)業(yè)務(wù)重點(diǎn)從返回值傳遞到回調(diào)函數(shù)種贝润。
app.use(function(){//todo})
var emitter =new events.EventEmitter;
emitter.on(function(){//`````````.todo})
2、 偏函數(shù):指定部分參數(shù)產(chǎn)生一個(gè)新的定制函數(shù)的形式就是偏函數(shù)铝宵。Node中異步編程非常常見(jiàn)打掘,我們通過(guò)燒餅變量會(huì)很容易造成業(yè)務(wù)的混亂华畏。underscore,after變量

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市尊蚁,隨后出現(xiàn)的幾起案子亡笑,更是在濱河造成了極大的恐慌,老刑警劉巖横朋,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件仑乌,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡琴锭,警方通過(guò)查閱死者的電腦和手機(jī)晰甚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)决帖,“玉大人厕九,你說(shuō)我怎么就攤上這事〉鼗兀” “怎么了扁远?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)落君。 經(jīng)常有香客問(wèn)我穿香,道長(zhǎng),這世上最難降的妖魔是什么绎速? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任皮获,我火速辦了婚禮,結(jié)果婚禮上纹冤,老公的妹妹穿的比我還像新娘洒宝。我一直安慰自己,他們只是感情好萌京,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布雁歌。 她就那樣靜靜地躺著,像睡著了一般知残。 火紅的嫁衣襯著肌膚如雪靠瞎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天求妹,我揣著相機(jī)與錄音乏盐,去河邊找鬼。 笑死制恍,一個(gè)胖子當(dāng)著我的面吹牛父能,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播净神,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼何吝,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼溉委!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起爱榕,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瓣喊,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后黔酥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體型宝,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年絮爷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梨树。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡坑夯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抡四,到底是詐尸還是另有隱情柜蜈,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布指巡,位于F島的核電站淑履,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏藻雪。R本人自食惡果不足惜秘噪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望勉耀。 院中可真熱鬧指煎,春花似錦、人聲如沸便斥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枢纠。三九已至像街,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間晋渺,已是汗流浹背镰绎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留些举,地道東北人跟狱。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像户魏,于是被迫代替她去往敵國(guó)和親驶臊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挪挤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 前言 前端工程師因?yàn)樾枰倏vAjax(Ajax的A就是Asynchronous的意思),因此关翎,是最了解異步IO的人...
    白昔月閱讀 3,996評(píng)論 1 8
  • # 模塊機(jī)制 node采用模塊化結(jié)構(gòu)扛门,按照CommonJS規(guī)范定義和使用模塊,模塊與文件是一一對(duì)應(yīng)關(guān)系纵寝,即加載一個(gè)...
    RichRand閱讀 2,508評(píng)論 0 3
  • Node.js是目前非陈壅火熱的技術(shù),但是它的誕生經(jīng)歷卻很奇特爽茴。 眾所周知葬凳,在Netscape設(shè)計(jì)出JavaScri...
    w_zhuan閱讀 3,616評(píng)論 2 41
  • 說(shuō)明本次redis集群安裝在rhel6.8 64位機(jī)器上,redis版本為3.2.8室奏,redis的gem文件版本為...
    讀或?qū)?/span>閱讀 14,740評(píng)論 3 9
  • 上了九年級(jí)火焰,最后一節(jié)課可能會(huì)拖堂,鑒于我們老讓車(chē)等胧沫,所以司機(jī)安排我們坐閻皮莊的車(chē)昌简。 今天放學(xué)坐車(chē)回家,還沒(méi)開(kāi)上大公...
    清北y閱讀 168評(píng)論 1 0