如何在此场景下规避ESLint的no-promise-executor-return错误?
解决no-promise-executor-return规则报错的sleep函数写法
你的sleep函数触发了ESLint的no-promise-executor-return规则,原因是箭头函数形式的Promise执行器隐式返回了setTimeout的返回值(定时器ID,一个数字),而该规则禁止Promise执行器返回非undefined的值。
以下是几种可行的修复方案:
方案1:显式返回undefined
在执行器函数里添加空的return语句,确保执行器返回undefined:
export function sleep(ms: number): Promise<void> { return new Promise<void>((resolve) => { setTimeout(resolve, ms); return; }); }
方案2:使用void忽略返回值
用void关键字包裹setTimeout调用,强制表达式返回undefined:
export function sleep(ms: number): Promise<void> { return new Promise<void>((resolve) => void setTimeout(resolve, ms)); }
方案3:改用普通函数作为执行器
普通函数不会隐式返回表达式结果,也能规避问题:
export function sleep(ms: number): Promise<void> { return new Promise<void>(function(resolve) { setTimeout(resolve, ms); }); }
这些写法都能满足no-promise-executor-return规则的要求,同时保留sleep函数的原有功能。
内容的提问来源于stack exchange,提问作者jakub_marchwiany
相关产品推荐
相关产品推荐

