跳至內容

promise/no-callback-in-promise 正確性

此規則的作用

禁止在 Promise.prototype.then()Promise.prototype.catch() 內部呼叫回呼函式 (cb())。

為什麼這樣不好?

then()catch() 方法內部直接呼叫回呼函式可能會導致意料之外的行為,例如回呼函式被多次呼叫。此外,以這種方式混合回呼和 Promise 範式會使程式碼變得混亂且難以維護。

範例

此規則的 不正確 程式碼範例

js
function callback(err, data) {
  console.log("Callback got called with:", err, data);
  throw new Error("My error");
}

Promise.resolve()
  .then(() => callback(null, "data"))
  .catch((err) => callback(err.message, null));

此規則的 正確 程式碼範例

js
Promise.resolve()
  .then((data) => {
    console.log(data);
  })
  .catch((err) => {
    console.error(err);
  });

參考資料

在 MIT 許可下發布。