# 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

执行器的返回值被忽略。从 executor 函数返回一个值是一个可能的错误,因为返回的值不能被使用并且它不会以任何方式影响 Promise。

# 规则详情

此规则不允许从 Promise 执行程序函数返回值。

只允许没有值的 return,因为它是一个控制流语句。

此规则的错误代码示例:

/*eslint no-promise-executor-return: "error"*/

new Promise((resolve, reject) => {
    if (someCondition) {
        return defaultResult;
    }
    getSomething((err, result) => {
        if (err) {
            reject(err);
        } else {
            resolve(result);
        }
    });
});

new Promise((resolve, reject) => getSomething((err, data) => {
    if (err) {
        reject(err);
    } else {
        resolve(data);
    }
}));

new Promise(() => {
    return 1;
});

此规则的正确代码示例:

/*eslint no-promise-executor-return: "error"*/

new Promise((resolve, reject) => {
    if (someCondition) {
        resolve(defaultResult);
        return;
    }
    getSomething((err, result) => {
        if (err) {
            reject(err);
        } else {
            resolve(result);
        }
    });
});

new Promise((resolve, reject) => {
    getSomething((err, data) => {
        if (err) {
            reject(err);
        } else {
            resolve(data);
        }
    });
});

Promise.resolve(1);
Last Updated: 5/13/2023, 8:55:38 PM