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"*/
(somePath);
function foo() {
var contents = (somePath).toString();
}
使用預設 { allowAtRootLevel: false }
選項時,此規則的正確程式碼範例
在遊樂場中開啟
/*eslint no-sync: "error"*/
obj.sync();
async(function() {
// ...
});
使用 { allowAtRootLevel: true }
選項時,此規則的錯誤程式碼範例
在遊樂場中開啟
/*eslint no-sync: ["error", { allowAtRootLevel: true }]*/
function foo() {
var contents = (somePath).toString();
}
var bar = baz => (qux);
使用 { allowAtRootLevel: true }
選項時,此規則的正確程式碼範例
在遊樂場中開啟
/*eslint no-sync: ["error", { allowAtRootLevel: true }]*/
fs.readFileSync(somePath).toString();
何時不使用它
如果您想要在您的腳本中允許同步操作,請不要啟用此規則。
版本
此規則在 ESLint v0.0.9 中引入。