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);
});