-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