问题标签 [yield-keyword]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5235 浏览

javascript - 支持 Chrome 浏览器的基于生成器的 Javascript 协程库

Javascript 生成器不能提供太多帮助,因为它不是真正的协程。所以我希望在浏览器中使用一些新的 ecmascript 6 关键字“yield”来实现协程。即,我希望我可以在调用堆栈中的多个帧中产生。

据我所知,我刚刚在 Firefox 上找到了一个基于 Javascript 1.7+ 的协程库,可以在http://www.neilmix.com/2007/02/07/threading-in-javascript-17/找到。

Chrome 浏览器长期以来一直支持“yield”。所以我想知道有一个协程实现支持使用 Javascript 生成器的 Chrome 浏览器。

谢谢!

0 投票
2 回答
1191 浏览

python - Python生成器发送:发送后不产生新值

这是一个奇怪的问题,所以我将解释:

我有一个像这样的生成器,它充当 IRC 服务器的生成器前端:

从理论上讲,这应该让我做一些很酷的事情,比如:

但是,有一个障碍:也generator.send 产生下一个值。这意味着这server.send也给了我下一条消息......我更愿意像所有其他消息一样处理它,产生为line.

我知道我可以用一种丑陋的方式解决这个问题,在收到发送后只产生一个垃圾值,但我试图让我的代码保持优雅,而事实恰恰相反。有没有办法告诉生成器我还不需要新值?

谢谢。

0 投票
2 回答
139 浏览

javascript - 发电机良率差

假设我们有以下生成器函数:

我们还有两个生成器产生以上生成器:

有人知道 之间有什么区别吗yield gen1 yield *gen1?发电机有什么作用*

0 投票
3 回答
284 浏览

c# - Understanding YIELD keyword in c#

I came across these two code snippets while reading about IEnumerable interfaces. I would like to understand the exact difference between them in simple terms.

Snippet 1 : without yield,

Snippet 2:with yield,

Both the snippets do the same work, So whats so specific in using YIELD over here?

Thanks in advance :)

0 投票
1 回答
167 浏览

python - Is there better way to swallow StopIteration exception generated by yield in python?

Now I plan to learn more about yield in python. And I found some codes about yield, which implemented the algorithm Reservoir Sampling as following:

In order to break the while loop, I just add some codes after item = yield selection

Question 1, Is there any better way to break out the while loop?

To call the function RandomSelect,

I have to catch the StopIteration exception explicitly.

Question 2, is there any better way to swallow the StopIteration in the codes?

0 投票
1 回答
2565 浏览

javascript - 从生成器内部使用的迭代器回调中产生

有没有人试图让 Underscore JS 或 lodash(或任何 ES5 标准函数)与生成器一起工作?

如果我们有一个数组var myArray = [1,2,3,4,6]; ,我们想对它进行 forEach。

在非发电机情况下,您只需

然而,当你不能在非生成器函数中产生时,所以如果在这个循环中我们必须做一些异步工作,你需要做以下事情。

哪种烂。

有人知道让匿名函数与生成器一起工作的方法吗?因此,我们有点失去了整个 lodash 库。

注意:我正在使用 Traceur 将我的代码编译成 ES6 并打开生成器。
注意:我没有使用 co()。我正在使用如下所示的自定义生成器函数

0 投票
1 回答
1730 浏览

python - 生成器如何在 python 中工作

我是 Python 和编程的新手。对于新程序员来说,生成器有点太复杂了。这是我关于 Python 中生成器函数的理论:

  1. 任何包含yield语句的函数都会返回一个生成器对象

  2. 生成器对象是包含状态的堆栈

  3. 每次我调用.next方法时,Python 都会提取函数的状态,当它找到另一个 yield 语句时,它会再次绑定状态并删除先前的状态:

例子:

这当然可能是地球上最愚蠢的理论,但请原谅我只是编码词的新手。

我的问题:

  1. Python 在内部做什么来存储状态?

  2. yield如果存在,语句是否将状态添加到堆栈?

  3. 内部创造了什么收益?我知道 yield 创建了一个生成器对象,但是,我想知道生成器对象包含哪些使它们工作的东西?它们只是状态的堆栈/列表,我们使用.next方法来提取每个状态,Python 会自动调用具有索引状态的函数吗?

0 投票
4 回答
2504 浏览

scala - 为什么产量不能与scala中的while循环一起使用

在 Scala 中,yield可以使用 for 循环;例如:

但我发现yield不能使用while循环,例如:

为什么 Scala 是这样设计的?

我在 Google 和 stackoverflow 上搜索过,但找不到答案。

0 投票
0 回答
38 浏览

python - python:Python中Iterables和生成器以及产量之间的区别?

在解决以下使用关键字的问题时,我遇到了这些术语iterablesgeneratoryield :yield

问题:定义一个具有生成器的类,该生成器可以在给定范围 0 和 n 之间迭代可被 7 整除的数字。

解决方案:

我不明白为什么yield在这里使用。我已经通过这个来源也了解了。

并提出另一个问题,因为迭代器和生成器的代码都给出了相同的输出。

可迭代代码:

生成器代码:

那么有什么意义呢?

0 投票
1 回答
452 浏览

node.js - 创建一个可屈服的节点模块/对象

我正在尝试创建一个 Node 模块(使用 Harmony),在被另一个模块/应用程序加载时,必须屈服于它,以便在调用它的任何公开函数之前可以执行和加载它的构造中的东西。

我遇到的问题是我似乎无法yield使用正在执行的内部函数module.exports。一个例子会有所帮助。

它已经难倒我好几个小时了!我觉得解决方案非常简单,但我似乎无法理解它。我试图简单地使 Tester() 函数导出,但仍然遇到同样的问题。为什么我看不到yieldTester() 函数?

另外,这种方法有什么替代方法?我想保持模块的对象性质,以便模块可以加载不同的输入,例如上面示例中的s_id变量/对象。