版本

no-sync

禁止同步方法

此規則在 ESLint v7.0.0 中已被棄用。請使用 eslint-plugin-n 中對應的規則。

在 Node.js 中,大多數 I/O 都是透過非同步方法完成的。然而,通常會有非同步方法的同步版本。例如,fs.exists()fs.existsSync()。在某些情況下,使用同步操作是可以接受的(如果像 ESLint 一樣,您正在編寫命令列公用程式)。然而,在其他情況下,使用同步操作被認為是不應該避免的不良實踐。例如,如果您正在 Node.js 上執行高流量的 Web 伺服器,您應該仔細考慮是否要允許任何可能鎖定伺服器的同步操作。

規則詳細資訊

此規則旨在防止在 Node.js 中呼叫同步方法。它特別尋找方法後綴「Sync」(Node.js 操作的慣例)。

選項

此規則有一個可選的物件選項 { allowAtRootLevel: <boolean> },它決定是否允許在檔案的最上層、任何函式之外使用同步方法。此選項預設為 false

使用預設 { allowAtRootLevel: false } 選項時,此規則的錯誤程式碼範例

在遊樂場中開啟
/*eslint no-sync: "error"*/

fs.existsSync(somePath);

function foo() {
  var contents = fs.readFileSync(somePath).toString();
}

使用預設 { allowAtRootLevel: false } 選項時,此規則的正確程式碼範例

在遊樂場中開啟
/*eslint no-sync: "error"*/

obj.sync();

async(function() {
    // ...
});

使用 { allowAtRootLevel: true } 選項時,此規則的錯誤程式碼範例

在遊樂場中開啟
/*eslint no-sync: ["error", { allowAtRootLevel: true }]*/

function foo() {
  var contents = fs.readFileSync(somePath).toString();
}

var bar = baz => fs.readFileSync(qux);

使用 { allowAtRootLevel: true } 選項時,此規則的正確程式碼範例

在遊樂場中開啟
/*eslint no-sync: ["error", { allowAtRootLevel: true }]*/

fs.readFileSync(somePath).toString();

何時不使用它

如果您想要在您的腳本中允許同步操作,請不要啟用此規則。

版本

此規則在 ESLint v0.0.9 中引入。

資源

變更語言