Skip to content
← Back to rules

promise/no-multiple-resolved 可疑

它做了什么

此规则会警告在 Promise 构造函数的执行器函数中出现多次解析的情况。

为什么这是不好的?

多次调用 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);
    }
  });
});

如何使用

要通过配置文件或命令行启用此规则,可以使用:

json
{
  "plugins": ["promise"],
  "rules": {
    "promise/no-multiple-resolved": "error"
  }
}
bash
oxlint --deny promise/no-multiple-resolved --promise-plugin

参考资料