我对此感到困惑,这是我在 nodejs.org的文档中找到的。
它表示rs
in 中的标志fs.open()
用于以同步模式打开文件以进行读取。
它只是让我觉得这是一个异步文件打开,但它正在同步读取?我真的很困惑这一点。
之后,它注意到这不会fs.open()
变成同步阻塞调用。如果那是您想要的,那么您应该使用fs.openSync()
.
fs.open
'srs
和fs.openSync
' s 和有什么不一样r
?
我对此感到困惑,这是我在 nodejs.org的文档中找到的。
它表示rs
in 中的标志fs.open()
用于以同步模式打开文件以进行读取。
它只是让我觉得这是一个异步文件打开,但它正在同步读取?我真的很困惑这一点。
之后,它注意到这不会fs.open()
变成同步阻塞调用。如果那是您想要的,那么您应该使用fs.openSync()
.
fs.open
'srs
和fs.openSync
' s 和有什么不一样r
?
不同之处在于一个函数需要回调。回调被传递给低级绑定,因此无论您传递给它的标志如何,该函数都将是异步的,因此文档说明该标志“不会fs.open()
变成同步阻塞调用”的原因。举个例子:
var fs = require('fs');
var file = './file';
// fd will always be defined
var fd = fs.openSync(file, 'r');
// fd is undefined because the function returns a
// binding, and the actually fs is passed in a callback
var fd = fs.open(file, 'rs');
如果我们不将回调传递给异步函数,则事件的结构不会返回结果文件描述符。这就是这两个函数的来源:
fs.open = function(path, flags, mode, callback) {
callback = makeCallback(arguments[arguments.length - 1]);
mode = modeNum(mode, 438 /*=0666*/);
if (!nullCheck(path, callback)) return;
binding.open(pathModule._makeLong(path), stringToFlags(flags), mode, callback);
};
fs.openSync = function(path, flags, mode) {
mode = modeNum(mode, 438 /*=0666*/);
nullCheck(path);
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
};