no-promise-executor-return
Запретить возвращаемые значения из функций-исполнителей Promise
Некоторые проблемы, выявленные этим правилом, могут быть исправлены вручную с помощью предложений редактора предложений
Конструктор 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.
Допускается только 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), это правило позволит возвращать пустые значения.
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.
Дополнительная информация
Источники
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-promise-executor-return