簡體   English   中英

fs.open'rs'flag和fs.openSync之間的區別

[英]Difference between fs.open 'rs' flag and fs.openSync

我對此感到困惑,我在nodejs.org的文檔中找到了。

它表示fs.open()中的rs標志用於打開文件以便在同步模式下讀取

它只是讓我覺得這是一個異步文件打開但它正在進行同步讀取 我真的很困惑這一點。

之后,它注意到這不會將fs.open()轉換為同步阻塞調用 如果那是你想要的那么你應該使用fs.openSync()

fs.openrsfs.openSyncr什么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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM