javascript - 在nodejs的程序里面怎么理解IO呢,如何用一段代碼來(lái)說(shuō)明IO
問(wèn)題描述
問(wèn)題解答
回答1:你可能沒把問(wèn)題描述清楚,IO只是個(gè)詞匯而已,像HTML也是一個(gè)縮寫詞匯。 你是不是想問(wèn): nodejs中的異步IO是怎么回事?
回答2:IO 是 Input/Output 的簡(jiǎn)寫,常見的輸入包括控制臺(tái)(鍵盤)輸入、文件輸出;常見的輸出包括控制臺(tái)(顯示器)輸出、文件輸出——這些都是很早就存在的概念。現(xiàn)在 IO 還包括網(wǎng)絡(luò)IO、設(shè)備IO……只要是輸入輸出就可以稱為 IO。
你給的這段代碼只是 IO 中讀取文件,也就是從文件輸入的一個(gè)例子。相對(duì)于其它語(yǔ)言或環(huán)境中常見讀文件操作來(lái)說(shuō),這里比較特殊的一點(diǎn)在于它是異步的,在發(fā)起讀文件請(qǐng)求(fs.readFile)的同時(shí),傳遞了一個(gè)回調(diào)((err, data) => {...})作為參數(shù)進(jìn)去,要求讀取文件完成之后由IO庫(kù)調(diào)用這個(gè)回調(diào),把文件內(nèi)容(data)作為參數(shù)傳遞給回調(diào)函數(shù),以便回調(diào)函數(shù)對(duì)其進(jìn)行處理。而處理過(guò)程,即回調(diào)函數(shù),是在發(fā)起讀文件請(qǐng)求的時(shí)候就已經(jīng)定義好的。
我估計(jì)你是對(duì)異步這個(gè)概念不是很清楚,但是如果在這里說(shuō),幾句話也說(shuō)不清楚,建議你去搜一下相關(guān)資料來(lái)看看。就搜 “JavaScript 異步”
回答3:fs.readFile是讀文件的操作,相當(dāng)于你說(shuō)的I,讀取的文件數(shù)據(jù)存儲(chǔ)在data變量里面;fs.writeFile是寫文件的操作(你代碼里面沒有涉及),相當(dāng)于你說(shuō)O,輸出數(shù)據(jù)到一個(gè)外部文件。簡(jiǎn)單的說(shuō):I是從外部讀入數(shù)據(jù)到程序,O是從程序輸出數(shù)據(jù)到外部文件。(老鐵,扎心了!踩我的務(wù)必說(shuō)說(shuō)理由)
回答4:I/O流,即輸入輸出,讀寫文件就是對(duì)數(shù)據(jù)輸入輸出
