咨询:ESLint no-useless-return为何判定Promise中reject后的return无用
问题解答
你这里的return被ESLint的no-useless-return规则判定为无用,核心原因是在这个setTimeout的回调函数里,reject()之后已经没有任何后续代码需要执行了。
你提到的“Promise拒绝后代码仍会继续执行”是对的——reject()只是改变Promise的状态,并不会直接终止当前函数的执行。但在你的这段代码里,reject()之后紧接着就是return,而return之后没有任何其他语句需要跳过。也就是说,有没有这个return,函数都会在执行完reject()后自然结束,所以这个return完全是多余的。
举个对比场景,如果回调函数里reject()之后还有其他代码,那return就有实际作用了:
setTimeout(() => { reject(); // 此时return会跳过后续代码 console.log('这段代码不会执行'); return; }, 5000);
但你的代码里不存在这种情况,reject()之后没有任何后续逻辑,因此这个return没有任何实际意义,ESLint规则会标记它为无用。
额外说明:resolve和reject都是普通函数,调用它们不会像return那样终止函数执行,只有当后续存在需要跳过的代码时,才需要在调用它们之后加return。
内容的提问来源于stack exchange,提问作者Egge
相关产品推荐
相关产品推荐

