2
我正在學習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
我的第一行rs_close
ws_close
誰能給我解釋一下?
提前致謝。
謝謝。這可以解決問題。 –
我在考慮文件鎖定問題。 (思考多線程編程模型) 在某些情況下,模塊可能會同時讀取/寫入同一個文件。在其他語言中,我通常鎖定文件直到完成。 但是,在NodeJS中,我如何以異步/非阻塞的方式思考? –