|
西虹网
西虹网 生成器函数不能直接作为函数来使用,执行生成器函数会返回一个生成器对象,将用于运行生成器内容和接受其中的值。 const gen=genFn() 生成器是是通过生成器函数的一个生成器(类)实例,我们可以简单地用一段伪代码来说明生成器这个类的基本内容和用法。虚拟手机号码是当下比较受关注的行业产品,我们网站内汇集很多最近最新的资讯,欢迎点击进入了解更多消息资讯! 西虹网
西虹网 西虹网
西虹网 西虹网
西虹网 class Generator { next(value) throw(error) [@iterator]() } 西虹网
西虹网 西虹网
西虹网 操作方法(语法) 方法内容 generator.next(value) 获取下一个生成器切出状态。 西虹网
西虹网 西虹网
西虹网 (第一次执行时为第一个切出状态)。 generator.throw(error) 向当前生成器执行对象抛出一个错误,并终止生成器的运行。 generator[@iterator] @iterator 即 Symbol.iterator,为生成器提供实现可迭代对象的方法。使其可以直接被 for...of 循环语句直接使用。 其中 .next(value) 方法会返回一个状态对象,其中包含当前生成器的运行状态和所返回的值。 { value: Any, done: Boolean } 生成器执行对象会不断检查生成器的状态,一旦遇到生成器内的最后一个 yield 语句或第一个 return 语句时,生成器便进入终止状态,即状态对象中的 done 属性会从 false 变为 true。 而 .throw(error) 方法会提前让生成器进入终止状态,并将 error 作为错误抛出。 西虹网
西虹网 西虹网
西虹网 运行生成器内容 因为生成器对象自身也是一种可迭代对象,所以我们直接使用 for...of 循环将其中输出的值打印出来。 |
|