语法
1 | function* helloWorldGenerator() { |
第一次调用时不执行
当第一次调用时不执行,只是返回一个函数指针。
只有当调用next()
时才执行函数,并遇到第一个yield
时停止,返回yield
的值。
每次调用next()
时,启动原来的暂停,并执行到下一个yield
或return
遇到return
直接结束。如果没有return
,则在执行完yield
后,下一个 next()才结束。yield
不是必须的
执行时机
需要注意的是,yield 表达式后面的表达式,只有当调用 next 方法、内部指针指向该语句时才会执行,因此等于为 JavaScript 提供了手动的“惰性求值”(Lazy Evaluation)的语法功能。