我是新手Node.js程序员,最近了解到fs
模块。我对异步和同步文件I/O有点困惑。
考虑以下测试:
var fs = require('fs');
var txtfile = 'async.txt';
var buffer1 = Buffer(1024);
var buffer2 = '1234567890';
fs.appendFile(txtfile, buffer1, function(err) {
if (err) { throw err };
console.log('appended buffer1');
});
fs.appendFile(txtfile, buffer2, function(err) {
if (err) { throw err };
console.log('appended buffer2');
});
当我运行这段代码时,大约有一半的时间会先打印出“appended buffer2”,然后再是“appended buffer1”。但是当我打开文本文件时,数据总是以正确的顺序出现-先是来自Buffer(1024)的一堆垃圾,然后是1234567890。我本来期望会是反向或乱七八糟的。
这是怎么回事?我做错了什么吗?是否存在某种维护顺序的低级I/O队列?
我看到有些关于Node文件系统I/O差异的讨论;如果我正在使用Mac,是否会有所不同呢?