提问人:Laurent Lyaudet 提问时间:9/6/2023 最后编辑:jonrsharpeLaurent Lyaudet 更新时间:9/6/2023 访问量:44
如何在没有未使用变量的情况下捕获生成器中的产量?[已结束]
How to catch a yield in a generator without having unused variable? [closed]
问:
我有一个警告,代码类似于这样:'res' is assigned a value but never used no-unused-vars
function* cancelCredit(action) {
const res = yield call(/*Nice api call 1*/);
const res2 = yield call(/*Nice api call 2*/);
// Do something with res2
yield // something
}
如何在没有未使用的变量的情况下隐藏这个生成器函数的第一个,例如?yield
console.log(res)
答:
1赞
Dimava
9/6/2023
#1
您可以通过使用运算符来忽略任何值:void
void yield call(/*Nice api call 1*/);
(这对于强制所有承诺明确等待或作废的 Eslint 规则特别有用)
但是,您的情况不是您必须这样做的 2.5 种情况之一 - 您可以忽略该值,这是允许的void
yield call(/*Nice api call 1*/);
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/yield
语法
yield yield expression
参数 expression 可选 通过迭代器协议从生成器函数中产生的值。如果省略,则生成 undefined。
返回值 返回传递给生成器的 next() 方法以恢复其执行的可选值。
注意:这意味着 next() 是不对称的:它总是向当前暂停的 yield 发送一个值,但返回下一个 yield 的操作数。无法检索传递给第一个 next() 调用的参数,因为当前没有暂停的 yield。
评论
0赞
Laurent Lyaudet
9/6/2023
以防万一其他人发现了这个问题,并且有和我一样的心态,并认为发电机只是一种方法,因为这是 90% 的用途。这里的关键点是,yield 表达式可以返回生成器调用者在两个“yield”之间给出的值。在 JS 中,这是通过给 .在 Python 中,您将使用该方法。以下关于 Python 的教程非常适合了解生成器的基本用途:realpython.com/introduction-to-python-generatorsnext()
send()
评论
yield call(/* args */);
const res =
yield ...
next
_