【问题标题】:Is it safe to use Generator function instead of normal function? [closed]使用 Generator 函数代替普通函数是否安全? [关闭]
【发布时间】:2017-10-05 18:19:14
【问题描述】:

yield不存在时它们是相同的,当然在运行阶段就不一样了。

function* add(x, y) {
    return x + y;
}  

var it = add(2, 3); 

it.next();

function add(x, y){
    return x + y;
}

add(2, 3);

作为一种习惯,使用它们代替正常功能是否安全且可以? 尽管有性能。

【问题讨论】:

  • 如果没有理由使用生成器函数,请不要。本例中没有。如果您有不同的实际用途,请写下来。
  • 通过准确说明“可以使用它们”的含义来避免自以为是的辩论 - 您是在寻找 generator_func().next().value 的行为与 func() 不同的情况,还是在寻找兼容性问题或.. .?
  • 我只是觉得使用生成器而不是普通函数可能是一个好主意,就像letconstvar 相比。所以在这种情况下不需要切换。
  • 将生成器函数用于普通函数有点过头了。
  • 请关闭这个问题。它是在询问纯粹的主观/定性问题,例如“安全吗?”、“可以吗?”

标签: javascript node.js asynchronous generator


【解决方案1】:

您的问题在各个方面都太宽泛了——我想对您说几句,但我真的认为应该删除这个问题/答案。

关于 SO 的每个问题都应包含 Minimum, Complete, Verifiable Example (MCVE)。有关如何在此处提问的其他指导,请参阅Help Center: How to Ask

安全吗?

只要您的环境支持生成器功能(大多数旧环境不支持),那么它肯定是“安全的”。如果您想支持遗留环境,那么您必须转译您的程序。

没事吧?

如果它是您的程序并且只有您需要维护它,那么您可以随心所欲。但是,如果您正在与其他人一起工作或发布一些供社区使用的东西,那么当普通函数调用 (f(x)) 就足够了时,其他程序员就不会想要使用生成器 API (f(x).next().value)。 /p>

...尽管表现出色

这是否意味着您知道生成器与普通函数相比性能很差?我没有基准,但我估计生成器至少比普通函数慢 10 倍,如果不是更慢的话。

...所以这种情况下不需要切换

在 JavaScript 的未来永远不会有某个时刻,每个人都回到他们的旧程序并更新所有函数以使用生成器。生成器有一组非常具体的用例,在普通函数可以正常工作的情况下使用它们是相当愚蠢的。

这只是我的一个问题!

这不会以某种方式提高您的问题的质量。 SO 是关于建立一个知识库,其中的问题和答案对现在对将来访问该站点的人有用。主观或基于意见的话题在这里被认为是题外话,因为许多用户的定性回复会很快使水变得混乱,并且很容易退化为争论——看看今天任何形式的媒体上的任何政治“讨论”

正如其他人评论的那样,如果您对此有客观的细节,那么您应该谈论/询问这些内容。 “安全吗?” “可以吗?”既不客观也不具体

【讨论】:

    猜你喜欢
    • 2011-12-22
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2021-09-10
    相关资源
    最近更新 更多