gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 22:03:20 25 4
gpt4 key购买 nike

我正在学习 NodeJS 的事件模型。

我对输出感到困惑。

代码只是将一些文本写入文件并将其读回。执行顺序似乎不受我控制。

var fs = require('fs');  
var ws = fs.createWriteStream("my_file.txt");
ws.once('open', function(fd) {
console.log( 'ws_open' );
ws.write("My first row\n");
ws.write("My second row\n");
ws.write("My third row\n");
ws.destroySoon();
});

ws.once('close', function() {
console.log( 'ws_close');
});

var rs = fs.createReadStream("my_file.txt");
rs.setEncoding('utf8');
rs.once('open', function(fd) {
console.log( 'rs_open' );
});
rs.once('close', function() {
console.log( 'rs_close');
});

rs.once('data', function(data) {
console.log( 'rs_data' );
console.log( data );
});

rs.once('error', function(exception) {
console.log( 'rs_exception' );
console.log( exception );
});

这是输出。

rs_open
ws_open
rs_close
ws_close

有时候,它会变成

ws_open
rs_open
rs_data
My first row

rs_close
ws_close

谁能给我一些解释吗?

提前致谢。

最佳答案

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

如:(简化)

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
}
});
}
});

关于node.js - 当我读/写同一个文件时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7520212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com