javascript 中的generator(生成器)函数,实际使用示例

412 阅读1分钟
  1. 在抽奖的时候,以前都是用一个全局变量,去处理次数,现在我们可以使用生成器函数 若采用ES5的方式,不使用Generator,则需要将count存入全局变量中,但是这样非常不安全,如果别人知道变量是什么,就可以修改变量;另外存入全局变量也会影响性能。

let getNum = function* (count) {
        while (count > 0) {
            count--;
            yield count;
        }
}

let theClick = getNum(5);
document.getElementById('btn').addEventListener('click', function(){
    console.log(theClick.next().value);
});


  1. 结合异步获取数据
let ajax = function* () {
    yield new Promise(function(resolve, reject){
        setTimeout(function(){
            resolve({err_code: 0});
        })
    })
}
ajax().next().value.then(function(val){console.log('val:', val)});