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

    一起学习提高吧~

  • 相关阅读:
    MySQL实用基本操作
    数组经典例题
    Java基础之流程控制
    Java基础之数组详解
    java基础语法(三大基础)
    golang map转json
    go get 无反应、访问github.com速度慢、没反应问题的解决方案
    微信公众平台,微信网页授权,redirect_uri参数错误,解决方法!
    通过 nginx 访问 golang web
    golang 报错信息及解决方法--采坑之路,学习使我快乐
  • 原文地址:https://www.cnblogs.com/CoderMonkie/p/10481386.html
Copyright © 2011-2022 走看看