Node.js 现在有生成器。
我的理解是,生成器可用于编写看起来更加线性的代码,并避免回调地狱和末日风格编码的金字塔。
所以到目前为止,我的理解是在生成器内部,代码执行直到它到达“yield”语句。生成器函数的执行此时暂停。该yield
语句指定可能是函数的返回值。通常这将是一个阻塞 I/O 函数——通常需要异步执行的函数。
yield 的返回函数被返回给任何称为生成器的东西。
我的问题是,此时会发生什么?究竟是什么执行了 yield 返回的阻塞 I/O 函数?
编写看起来是线性的生成器/产量代码是否正确,需要有一种特定类型的函数来调用生成器,一个循环通过生成器并执行产量返回的每个异步函数并返回的函数异步函数的结果返回到生成器?
我仍然不清楚 yield 返回的异步函数是如何执行的。如果是由调用生成器的函数执行的,是异步执行的吗?我猜是因为否则会导致阻塞行为。
总结我的问题:
- 要使用生成器编写“线性”异步代码,是否有必要有一个调用函数来迭代生成器,将产生的函数作为回调执行并将回调的结果返回到生成器?
- 如果问题 1 的答案是肯定的,那么产生的函数究竟是如何执行的——异步执行?
任何人都可以对整个过程的工作方式提供更好的概述/总结吗?