[JavaScript] 的异步编程之手写一个Gernerator的例子

<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() 时继续后面的(循环)处理。
***************************************

作者:码路工人

公众号:码路工人有力量(Code-Power)

欢迎关注个人微信公众号 Coder-Power

一起学习提高吧~

原文地址:https://www.cnblogs.com/CoderMonkie/p/10481386.html