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.
Подробности правила
Это правило запрещает возвращать значения из функций-исполнителей 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.
Дополнительная литература
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-promise-executor-return