nodejs中yield构成循环,自定义如何循环,如何处理结果

之前看过js的yield,但是很糊涂。现在又看了一下。虽然还是没太明白但是总结了一个小方法方便使用。原理什么的后面再研究。坑什么的用的过程中再填。

勇往直前

看下面。

// 迭代器,传入参数1 如何循环,必须是function *的方法。第二个参数是 循环得到结果如何处理
var Iterator = function(ite, execute=null){
    let res = ite();
    while(true){
      let currRes = res.next();
      if(currRes.done===true){ break; }//done了就退出循环
      if(execute!==null) { execute(currRes.value); }
    }
  }
// 这是一组样本数据,两组数据分散在两个数组中,目的是要一个循环输出。
let yd = {items:[[{id:1},{id:2},{id:3}],[{id:4},{id:5}]]};
// ==================== 这个方法定义如何循环
let itg = function *gen(){
    for (let i in yd.items){
        let citem = yd.items[i];
        for (let x of citem){
            yield x;
        }
    }
    return -1;
}
// 具体用法,前一个是如何循环(这里就天马行空了!正反循环,跳跳循环),后一个是循环得到数据后如何处理
Iterator(itg, function(r){ console.log(r); });

 

转载于:https://my.oschina.net/raddleoj/blog/3068469

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值