no-promise-executor-return
禁止从 Promise 执行器函数中返回值
💡 hasSuggestions
此规则报告的一些问题可以通过编辑器 建议 手动修复。
new Promise
构造函数接受一个名为执行器的单个参数。
const myPromise = new Promise(function executor(resolve, reject) {
readFile('foo.txt', function(err, result) {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
执行器函数通常会启动一些异步操作。一旦完成,执行器应该用结果调用 resolve
,如果发生错误,则调用 reject
。
执行器的返回值被忽略。从执行器函数中返回值可能是错误,因为返回值无法使用,并且不会以任何方式影响 Promise。
规则详细信息
此规则禁止从 Promise 执行器函数中返回值。
只允许没有值的 return
,因为它是一个控制流语句。
此规则的不正确代码示例
在游乐场中打开
/*eslint no-promise-executor-return: "error"*/
new Promise((resolve, reject) => {
if (someCondition) {
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
new Promise((resolve, reject) => );
new Promise(() => {
});
new Promise(r => );
此规则的正确代码示例
在游乐场中打开
/*eslint no-promise-executor-return: "error"*/
// Turn return inline into two lines
new Promise((resolve, reject) => {
if (someCondition) {
resolve(defaultResult);
return;
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
// Add curly braces
new Promise((resolve, reject) => {
getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
new Promise(r => { r(1) });
// or just use Promise.resolve
Promise.resolve(1);
选项
此规则采用一个选项,一个对象,具有以下属性
allowVoid
: 如果设置为true
(默认值为false
),此规则将允许返回 void 值。
allowVoid
使用 { "allowVoid": true }
选项的此规则的正确代码示例
在游乐场中打开
/*eslint no-promise-executor-return: ["error", { allowVoid: true }]*/
new Promise((resolve, reject) => {
if (someCondition) {
return void resolve(defaultResult);
}
getSomething((err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
});
});
new Promise((resolve, reject) => void getSomething((err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
}));
new Promise(r => void r(1));
相关规则
版本
此规则是在 ESLint v7.3.0 中引入的。