Node.js 当我读/写同一个文件时会发生什么?

Node.js 当我读/写同一个文件时会发生什么?,node.js,Node.js,我正在学习NodeJS的事件模型 我对输出感到困惑 代码只需将一些文本写入文件并将其读回即可。 执行命令似乎超出了我的控制 var fs=require('fs'); var ws=fs.createWriteStream(“my_file.txt”); ws.once('open',函数(fd){ log('ws_open'); write(“我的第一行”\n); write(“我的第二行”\n); write(“我的第三行”\n); ws.destroyson(); }); ws.onc

我正在学习NodeJS的事件模型

我对输出感到困惑

代码只需将一些文本写入文件并将其读回即可。 执行命令似乎超出了我的控制

var fs=require('fs');
var ws=fs.createWriteStream(“my_file.txt”);
ws.once('open',函数(fd){
log('ws_open');
write(“我的第一行”\n);
write(“我的第二行”\n);
write(“我的第三行”\n);
ws.destroyson();
});  
ws.once('close',function(){
log('ws_close');
});  
var rs=fs.createReadStream(“my_file.txt”);
rs.setEncoding('utf8');
rs.once('open',函数(fd){
console.log('rs_open');
});  
rs.once('close',function(){
console.log('rs_close');
});  
rs.once('data',函数(data){
log('rs_data');
控制台日志(数据);
});  
rs.once('error',函数(异常){
log('rs_exception');
console.log(异常);
});  
这是输出

rs_打开
ws_open
rs_关闭
关闭

有时,它变得

ws_open
rs_打开
遥感数据
我的第一排

rs_关闭
关闭

谁能给我解释一下吗


提前感谢。

您正在做异步工作,就好像它是同步的一样。仅仅因为代码中的某些内容较低,并不意味着它会在以后发生。如果在完成写入之前不想读取文件,请将读取的内容放入写操作的回调中

如:(简化)


我在考虑文件锁定问题。(在多线程编程模型中考虑。)在某些情况下,模块可能同时读取/写入同一文件。在另一种语言中,我通常在完成之前锁定文件。但是,在NodeJS中,我如何以异步/非阻塞的方式思考呢?
writeFile (name, writeData, function (error) {
  if (error)
    .... // handle error
  else { // successfully wrote file
   readFile(name, function (error, readData) {
     if (error) 
        .... // handle error
     else { // successfully read file
       ... // do something with readData
     }
    });
  }
 });