Skip to content
← Back to rules

promise/no-multiple-resolved Suspicious

它的作用

此规则会警告在作为 Promise 构造函数执行器的函数中,存在多次 resolve 的路径。

为什么这很糟糕?

多次 resolve/reject 调用:

  • 违反 Promise/A+ 规范
  • 对 Promise 的行为没有任何影响
  • 使代码意图不清晰
  • 可能表明实现中存在逻辑错误

示例

以下是此规则的错误代码示例:

javascript
new Promise((resolve, reject) => {
  fn((error, value) => {
    if (error) {
      reject(error);
    }

    resolve(value); // `reject` 和 `resolve` 都可能被调用。
  });
});

以下是此规则的正确代码示例:

javascript
new Promise((resolve, reject) => {
  fn((error, value) => {
    if (error) {
      reject(error);
    } else {
      resolve(value);
    }
  });
});

如何使用

To enable this rule using the config file or in the CLI, you can use:

json
{
  "plugins": ["promise"],
  "rules": {
    "promise/no-multiple-resolved": "error"
  }
}
ts
import { defineConfig } from "oxlint";

export default defineConfig({
  plugins: ["promise"],
  rules: {
    "promise/no-multiple-resolved": "error",
  },
});
bash
oxlint --deny promise/no-multiple-resolved --promise-plugin

版本

此规则于 v1.19.0 中添加。

参考资料