返回值中的生成器函数混淆

艾丽莎·T·摩根

我读了有关生成器功能的信息,我认为它与 async await 或多或少相同,但预期结果与实际结果不同。

function* adding() {
  var result = 1 + 1
  return 20 + (yield result)
}

var sum = adding()
console.log(sum.next()) // not returning 22 but 2?
console.log(sum.next(10)) // where is 30 come from?

某些表演

yield关键字暂停发电机的功能。当您.next()第一次调用时,解释器会遍历生成器,直到遇到第一个yield. 生成器将在那里暂停,并将 后面的表达式返回yield给 的调用者.next()因此,由于result从 2 开始,yield result导致第一个.next()调用返回 2。

当您.next()使用表达式调用时,该表达式将被替换到最后一次暂停所在的生成器函数中yield所以,当.next(10)被调用时,这里的这一行:

return 20 + (yield result)

变成

return 20 + (10)

因为10是传递给.next(). 所以,最后20 + 10返回的是 30。

如您所见,生成器/完全不同,尽管它们都处理控制异步程序流。asyncawait

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

生成器返回值的语义

生成器模式代码无法返回值

JavaScript生成器中的收益率返回值解析

了解收益率如何影响JS生成器中的返回值

Python 3 生成器函数返回相同的值

如何在生成器中包装返回连续值的函数?

包装到函数中的Haskell随机生成器始终返回相同的值

如何从JavaScript中的递归生成器函数返回?

“无法获取尚未返回的生成器的返回值” php 回溯

在生成器上使用扩展语法时,为什么不检索返回值

从生成器函数返回的链接promise

从函数返回的生成器过早完成

TypeScript中的通用函数生成器生成的函数返回类型无法分配

理解 Python 中的生成器函数

在生成器上应用numpy函数(np.vstack)返回2个值

为什么我的生成器函数总是返回相同的值?

在给定的/用作表达式(返回值)时,不使用for作为主题生成器

生成器与返回生成器的函数之间的区别

函数中不同生成器之间的差异,“收益”和返回元组迭代

从调用生成器的函数返回还是让出?

生成器函数的返回类型提示是什么?

python函数返回生成器或普通对象的问题

模拟使用PHPUnit / Phake返回PHP生成器的函数

比較報表生成器中的兩個字段並返回“是”或“否”值

生成器总是在随机句子生成器中返回相同的故障事件

如何一次从Python的生成器函数中获取一个值?

您可以将此值绑定到生成器函数中吗

生成器函数,用于计算 Python 中多个值的平均值

为什么生成器没有返回任何值?