【发布时间】:2013-07-05 05:07:43
【问题描述】:
Node.js 现在有生成器。
我的理解是,生成器可用于编写看起来更线性的代码,并避免回调地狱和末日风格编码的金字塔。
所以到目前为止,我的理解是在生成器内部,代码会一直执行,直到它到达“yield”语句。生成器函数的执行此时暂停。 yield 语句指定了一个可能是函数的返回值。通常这将是一个阻塞 I/O 函数 - 通常需要异步执行。
yield 的返回函数返回到任何称为生成器的地方。
我的问题是,此时会发生什么?究竟是什么执行了 yield 返回的阻塞 I/O 函数?
编写看起来是线性的生成器/收益代码是否正确,需要有一种特定类型的函数来调用生成器,一个循环通过生成器并执行收益返回的每个异步函数的函数并将异步函数的结果返回到生成器中?
我仍然不清楚 yield 返回的异步函数是如何执行的。如果是由调用生成器的函数执行的,是异步执行的吗?我猜是因为否则会导致阻塞行为。
总结一下我的问题:
- 要使用生成器编写“线性”异步代码,是否必须有一个调用函数来迭代生成器,将产生的函数作为回调执行并将回调的结果返回到生成器?
- 如果问题 1 的答案是肯定的,那么产生的函数究竟是如何执行的 - 异步?
谁能更好地概述/总结整个过程的工作原理?
【问题讨论】:
-
这可能会有所帮助,还链接到帖子中的代码:bjouhier.wordpress.com/2013/06/01/…
-
您可能想看看github.com/loveencounterflow/coffy-script,它对使用生成器进行异步编程进行了冗长的逐步介绍。