第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

關(guān)于writerStream.end()

一直不懂要是最后一次讀取數(shù)據(jù)后 調(diào)用writerStream.end()時(shí) ?writerStream還沒(méi)寫(xiě)完怎么辦

正在回答

1 回答

var fs = require('fs');var readStream = fs.createReadStream('/path/to/source');var writeStream = fs.createWriteStream('/path/to/dest');

readStream.on('data', function(chunk) { // 當(dāng)有數(shù)據(jù)流出時(shí),寫(xiě)入數(shù)據(jù)
? ?writeStream.write(chunk);
});

readStream.on('end', function() { // 當(dāng)沒(méi)有數(shù)據(jù)時(shí),關(guān)閉數(shù)據(jù)流
? ?writeStream.end();
});

上面的代碼就有一個(gè)問(wèn)題,要是寫(xiě)入速度跟不上讀取速度,就可能造成你說(shuō)的writeStream還沒(méi)寫(xiě)完就被關(guān)閉了。所以可以改成下面這種,我寫(xiě)完一段,你再讀取下一段。這里如果是最后一次讀取數(shù)據(jù),那么讀了之后,writeStream開(kāi)始寫(xiě),寫(xiě)完再通知readStream去讀數(shù)據(jù),可是這時(shí)readStream發(fā)現(xiàn)沒(méi)有數(shù)據(jù)可讀了,于是就觸發(fā)end事件的監(jiān)聽(tīng)器,它們才被關(guān)閉了

var fs = require('fs');var readStream = fs.createReadStream('/path/to/source');var writeStream = fs.createWriteStream('/path/to/dest');

readStream.on('data', function(chunk) { // 當(dāng)有數(shù)據(jù)流出時(shí),寫(xiě)入數(shù)據(jù)
? ?if (writeStream.write(chunk) === false) { // 如果沒(méi)有寫(xiě)完,暫停讀取流
? ? ? ?readStream.pause();
? ?}
});

writeStream.on('drain', function() { // 寫(xiě)完后,繼續(xù)讀取
? ?readStream.resume();
});

readStream.on('end', function() { // 當(dāng)沒(méi)有數(shù)據(jù)時(shí),關(guān)閉數(shù)據(jù)流
? ?writeStream.end();
});

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
進(jìn)擊Node.js基礎(chǔ)(二)
  • 參與學(xué)習(xí)       76727    人
  • 解答問(wèn)題       242    個(gè)

本教程帶你攻破 Nodejs,讓 JavaScript流暢運(yùn)行在服務(wù)器端

進(jìn)入課程

關(guān)于writerStream.end()

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)