最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何在 Generator 中忽略 yield 返回值且不产生未使用变量警告
时间:2026-07-06 13:43:46 编辑:袖梨 来源:一聚教程网
在 JavaScript Generator 函数中,若只需执行 yield 副作用(如发起 API 调用)而无需其返回值,直接赋值给变量会触发 ESLint 的 no-unused-vars 警告;此时可省略变量声明,仅用 yield expression 语句即可安全忽略返回值,无需 void 或占位符。
在 javascript generator 函数中,若只需执行 `yield` 副作用(如发起 api 调用)而无需其返回值,直接赋值给变量会触发 eslint 的 `no-unused-vars` 警告;此时可省略变量声明,仅用 `yield expression` 语句即可安全忽略返回值,无需 `void` 或占位符。
Generator 函数中的 yield 表达式本质是暂停执行并交出控制权,其返回值(即 iterator.next(value) 中传入的 value)属于下一次恢复时的输入,而非当前 yield 的输出。而 yield expression 本身的求值结果(即 expression 的返回值)才是当前 next() 调用所获取的 .value —— 这个值完全可以被忽略,就像忽略普通函数调用的返回值一样。
✅ 正确写法(推荐):直接执行,不声明变量
function* cancelCredit(action) { yield call(/* Nice api call 1 */); // ✅ 无变量、无警告、语义清晰 const res2 = yield call(/* Nice api call 2 */); // 处理 res2... yield put({ type: 'CREDIT_CANCELLED' });}
⚠️ 注意事项:
- void yield call(...) 虽能绕过 ESLint 警告,但属于过度设计——void 用于强制丢弃 Promise 防止“未处理拒绝”,而此处 yield 本身不返回 Promise,call(...) 的返回值由 redux-saga 等中间件管理,与 Promise 状态无关;
- 不要误用 yield;(无表达式),它等价于 yield undefined,无法触发异步任务;
- 若你使用的是 eslint-plugin-react-hooks 或自定义规则强制要求“所有 yield 必须赋值”,应优先调整规则配置,而非妥协代码可读性。
? 总结:Generator 中 yield expression 是一条完整的语句,无需绑定变量。忽略返回值是合法且惯用的写法,既符合语言规范,也保持代码简洁专业。
相关文章
- 如何登录QQ邮箱网页版 07-08
- 鄂汇办app如何重新注册二级建造师 07-08
- Soul私信功能异常如何解决 07-08
- 如何在火绒安全软件中进行右键管理菜单设置 07-08
- 智慧中小学课程教学如何删除 07-08
- 如何登录邮箱gmail 07-08