promise/prefer-catch 风格
它做了什么
优先使用 catch 而不是 then(a, b) 以及 then(null, b)。此规则禁止在 then 调用的第二个参数中传递参数来处理承诺错误。
为什么这是个问题?
带有两个参数的 then 调用可能会使识别是否存在错误处理程序变得更为困难。在 then 调用中使用第二个参数的另一个问题是,承诺错误处理的顺序不够明确。
例如,乍一看,可能认为 prom.then(fn1, fn2) 等价于 prom.then(fn1).catch(fn2)。但实际上它们并不等价。事实上,prom.catch(fn2).then(fn1) 才是等价的。这种混淆正是为何应优先使用显式的 catch 调用,而不是向 then 调用的第二个参数传递参数的原因。
示例
此规则的不正确代码示例:
js
prom.then(fn1, fn2);
prom.then(null, fn2);此规则的正确代码示例:
js
prom.catch(fn2).then(fn1);
prom.catch(fn2);如何使用
要通过配置文件或 CLI 启用此规则,可以使用:
json
{
"plugins": ["promise"],
"rules": {
"promise/prefer-catch": "error"
}
}bash
oxlint --deny promise/prefer-catch --promise-plugin