zoukankan      html  css  js  c++  java
  • [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

    一起学习提高吧~

  • 相关阅读:
    一些常用的代码评审工具
    Atlassian旗下一干team build软件
    Jira功能全介绍
    项目经验分享
    网址、下载地址
    Java 字节码解读
    Gitlab 安装
    博客园设置
    mybatis 遇到空串无法判断
    Shell 脚本入门
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/10481386.html
Copyright © 2011-2022 走看看