[英]Difference between fs.open 'rs' flag and fs.openSync
我對此感到困惑,我在nodejs.org的文檔中找到了。
它表示fs.open()
中的rs
標志用於打開文件以便在同步模式下讀取 。
它只是讓我覺得這是一個異步文件打開但它正在進行同步讀取 ? 我真的很困惑這一點。
之后,它注意到這不會將fs.open()
轉換為同步阻塞調用 。 如果那是你想要的那么你應該使用fs.openSync()
。
fs.open
的rs
和fs.openSync
的r
什么fs.openSync
?
不同之處在於一個函數需要回調。 回調被傳遞給低級綁定,因此無論您傳遞給它的標志如何,該函數都將是異步的,因此文檔說明標志“不會將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);
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.