nodejs中yield的用法?

nodejs中yield的用法?
最新回答
云风未归

2023-08-01 11:55:53

GeneratorFunction在Node.js中用于实现异步代码的同步化调用,通过yield关键字生成一个可暂停的函数。yield的作用相当于暂停当前函数的执行,直到调用next()方法时恢复执行。

让我们简化示例代码来深入理解yield的用法。

首先,需要明确两点以便理解。

1. Generator每次调用next()方法返回的对象形式为{ value:Object,done:Boolean },我们暂时称之为“Ret”。

2. 生成器函数可以通过gen.next(args)的形式将参数传递给yield生成的函数。

本质上,当使用co库执行示例代码时,代码中yield了一个函数(我们称之为fn)。当generator切换控制权时,会将yield生成的对象传递给“Ret”的value属性,然后使用Promise构造器将该对象异步化处理。之后,代码会继续执行,重复此过程直到“done”变为true。

“done”参数决定Promise最终是成功(resolve)还是失败(reject)。

因此,通过调用next()方法,可以控制Promise的执行流程,从而实现异步代码的同步化执行。

总之,co库的核心执行过程是通过递归调用next方法来控制生成器函数的执行流程。