美文网首页
ES6 8.Generator

ES6 8.Generator

作者: Coldhands | 来源:发表于2018-07-22 16:52 被阅读0次

    实例:
    1.前端实现抽奖次数的限制。

    {
        let draw = function (count) {
            // 具体抽奖业务逻辑
            console.log(`剩余${count}次`);
        }
        let residue = function* (count){
            while(count > 0){
                count--;
                yield draw(count);
            }
        }
        let star = residue(5); //5为后台传输进来的抽奖次数
        let btn = document.createElement('button');
        btn.id = 'start';
        btn.textContent = '抽奖';
        document.body.appendChild(btn);
        document.getElementById('start').addEventListener('click',function(){
            star.next();
        },false);
    }
    

    2.长轮询

    {
        let ajax = function* (){  //接口模拟
            yield new Promise(function(resolve,reject){
                setTimeout(function(){  //此处为项目中正常的请求数据逻辑
                    resolve({code: 0});
                },200)
            })
        }
    
        let pull = function(){  //此段可以直接用,只需修改上方接口逻辑
            let generator = ajax();
            let step = generator.next();
            step.value.then(function(d){
                if (d.code != 0) {
                    setTimeout(function(){
                        console.log('wait'); 
                        pull();
                    },1000);
                }else{
                    console.log(d);
                }
            })
        }
        pull();
    }
    

    相关文章

      网友评论

          本文标题:ES6 8.Generator

          本文链接:https://www.haomeiwen.com/subject/pwolmftx.html