• ES6学习笔记七Generator、Decorators


    Generator异步处理

    {
        // genertaor基本定义,next()一步步执行
        let tell=function* (){
            yield 'a';
            yield 'b';
            return 'c'
        };
        let k=tell();
    
        console.log(k.next()); //{value: "a", done: false}
        console.log(k.next()); //{value: "b", done: false}
        console.log(k.next()); //{value: "c", done: true}
        console.log(k.next());//{value: undefined, done: true}
    
    }

    应用场景

    // 应用场景,变量变化的实时存储
    {
        let draw=function(count){
            // 具体抽奖逻辑
            console.info(`剩余${count}次`)
        }
    
        let residue=function *(count){
            while(count>0){
                count--;
                yield draw(count);
            }
        }
    
        let star=residue(5);
        let btn=document.createElement("button");
        btn.id='star';
        btn.textContent='抽奖';
        document.body.appendChild(btn);
        document.getElementById('star').addEventListener("click",function(){
            star.next();
        },false)
    }
    长轮询(服务端某个状态在变化,我们也需要实时去访问变化)
    {
        // 长轮询(服务端某个状态在变化,我们也需要实时去访问变化)
        let ajax=function* (){
            yield new Promise(function(resolve,reject){
                setTimeout(function(){
                    resolve({code:1})
                },200);
            })
        }
    
        let pull=function(){
            let genertaor=ajax();
            let step=genertaor.next();
            step.value.then(function(d){
                if(d.code!=0){
                    setTimeout(function(){
                        console.info('wait');
                        pull()
                    },1000);
                }else {
                    console.log(d);
                }
            })
        }
    
        pull();
    }

    Decorator函数修饰符,通过修饰器修改类的行为

  • 相关阅读:
    Jmeter分布测试
    SQL命令
    Linux执行命令时遇到的些问题
    Linux常用命令总结
    Jenkins与SVN持续集成
    在linux上创建slave节点
    内网域名配置方法
    Java中重写与重载的区别
    MongoDB基本使用
    MongoDB安装
  • 原文地址:https://www.cnblogs.com/qdlhj/p/9995685.html
Copyright © 2020-2023  润新知