-3
在試圖理解事件循環時,我寫了一個快速片段來測試我的假設。毫不奇怪,他們錯了!異步寫入多個文件
import fs from 'fs'
let bufferA = new Buffer(1e+9)
bufferA.fill(0)
let bufferB = new Buffer(1e+0)
bufferB.fill(0)
let fileA = fs.openSync('fileA', 'w')
let fileB = fs.openSync('fileB', 'w')
fs.write(fileA, bufferA, 0, bufferA.length, (err) => { console.log(err || 'wroteA')})
console.log('Started writing to A..')
fs.write(fileB, bufferB, 0, bufferB.length, (err) => { console.log(err || 'wroteB')})
console.log('Started writing to B..')
我希望這兩個文件將被寫入到異步(即,完成FILEB第一),但輸出如下:
Started writing to A..
Started writing to B..
wroteA
wroteB
具有延遲被示wroteA
之前。因此,儘管fs.write
似乎與我的代碼異步操作(即,日誌先寫入),但您似乎一次只能寫入一個文件?
所以,你的問題留給讀者自己想一想,但你是否說你感到驚訝,fileB並沒有先完成,因爲寫入它的字節數是如此之多較小(1GB vs 1個字節)?這個問題是關於什麼的? – jfriend00
在我的系統中,我收到'writesB',就像我期望的那樣,在'writesA'之前顯示了很久。什麼版本的node.js和你在哪個操作系統上運行?我在Windows 10上運行節點v0.12.2。我無法重現你說你得到的結果。 – jfriend00
你爲什麼沒有反應?我測試了你的場景,並收到了不同的結果,向你解釋並向你提出了一些問題,現在你不在身邊。 – jfriend00