查看下面的伪代码,是否可能会对文件的写入造成损坏?
for(var i=0;i<5;i++)
fs.appendFile("myfile.txt", "myline"+i+'\n', somecallback)
fs是found here
我期待的可能性:
myline3
myline4
myline1
myline2
myline0
但是这可能吗?
mylimyline4
ne3
myline1
myline2
myline0
在这种情况下,第二个附加将发生在第一个附加的中间。因为如果发生这种情况,我将不得不手动对写入进行排队。
答案 0 :(得分:1)
我编写了一个程序来测试它并且无法使它混合使用不同的附加内容。
var fs = require('fs')
var filename = __dirname + '/file.bin'
var bytes_per_buff = parseInt(process.argv[2]) || 4096
var num_buffs = parseInt(process.argv[3]) || 256
var buffs = []
for (var i=0; i<num_buffs; i++) {
buffs[i] = new Buffer(bytes_per_buff)
for (var j=0; j<bytes_per_buff; j++) {
buffs[i][j] = i
}
}
fs.writeFile(filename, '', ()=>console.log('file created'))
for (var i=0; i<num_buffs; i++) {
(function(buff_num) { //closure to log buff_num
fs.appendFile(filename, buffs[buff_num], ()=>console.log(buff_num))
}(i))
}