gpt4 book ai didi

javascript - fs.open 'rs' 标志和 fs.openSync 之间的区别

转载 作者:搜寻专家 更新时间:2023-10-31 23:43:21 25 4
gpt4 key购买 nike

我对这个很困惑,我在 document 上找到的在 nodejs.org 中。

它表示 fs.open() 中的 rs 标志用于以同步模式打开文件以进行读取

这让我觉得这是一个异步文件打开,但它正在执行一个同步读取?我真的很困惑这一点。

之后它注意到这不会将fs.open() 变成同步阻塞调用。如果那是您想要的,那么您应该使用 fs.openSync()

fs.openrsfs.openSyncr 有什么区别?

最佳答案

不同之处在于一个函数需要一个回调。回调被传递给低级绑定(bind),因此无论您传递给它的标志如何,该函数都是异步的,因此文档说明标志“不会打开 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);
};

关于javascript - fs.open 'rs' 标志和 fs.openSync 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18995980/

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