<html> <head> <meta charset="UTF-8"> <title>Generator Demo</title> <script> function* funGenerator(){ for(var i=0;i<10;i++){ // the result of "var" is as same as "let" here console.log("loop:" + i); yield i; } } function init(){ var gen = funGenerator(); var ret = gen.next(); while(!ret.done){ console.log("Generator:", ret.value); ret = gen.next(); } } </script> </head> <body onload="init();"> </body> </html>
console打印结果:
loop:0
Generator: 0
loop:1
Generator: 1
loop:2
Generator: 2
loop:3
Generator: 3
loop:4
Generator: 4
loop:5
Generator: 5
loop:6
Generator: 6
loop:7
Generator: 7
loop:8
Generator: 8
loop:9
Generator: 9
***************************************
因为之前基本都是用C#编程,
这写起来,yield一样一样的。
所以,还是得用TypeScript。。
***************************************
Generator 是ES2015中添加的语法,
用来实现异步编程,
但貌似在有了asyc/await之后没太大用处了
***************************************
两个关键字:
* 和 yield
* 表示这是个Generator函数,
yield 表示此处先给调用处返回一个结果,
然后在被调用 next() 时继续后面的(循环)处理。
***************************************