码迷,mamicode.com
首页 > 其他好文 > 详细

生成器和生成器函数 例子

时间:2021-05-24 13:47:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:生成   数据   cti   div   time   out   ons   function   例子   

 // // 函数代码分隔符
    // function * gen(){
    //   // console.log(‘hello generator‘);  
    // }

    // let iterator = gen(); 
    // // console.log(iterator);
    // // iterator.next(); // hello generator



    // 函数代码分隔符
    function * gen(){
      // console.log(111); 
      yield ‘一只没有耳朵‘;
      // console.log(222); 
      yield ‘一只没有尾巴‘;
      // console.log(333); 
      yield ‘真奇怪‘;
      // console.log(444); 
    }

    //  let iterator = gen();  
    //  iterator.next(); // 111
    //  iterator.next(); // 222
    //  iterator.next(); // 333
    //  iterator.next(); // 444

    // 遍历 
    for(let v of gen()){
      console.log(v);
    }
------------------------------
 
 function * gen(arg){
      console.log(arg);
       let one =  yield 111;
       console.log(one);
        yield 222;
        yield 333;
    }

     let iterator = gen(‘AAA‘); 
    // console.log(iterator);
    console.log(iterator.next()); 
    // next 方法可以传入 实参
    console.log(iterator.next(‘BBB‘)); 
    // console.log(iterator.next());
    // console.log(iterator.next());
---------------------------------
 
  // 回调地域
    //  setTimeout(() => {
    //     console.log(111);
    //     setTimeout(() => {
    //         console.log(222);
    //         setTimeout(() => {
    //         console.log(333);
    //         }, 3000);
    //     }, 2000);
    //  }, 1000);


    function one(){
      setTimeout(() => {
        console.log(111);
        iterator.next();
      }, 1000);
    }

    function two(){
      setTimeout(() => {
        console.log(222);
        iterator.next();
      }, 2000);
    }
 
    function three(){
      setTimeout(() => {
        console.log(333);
      }, 3000);
      iterator.next();
    }

    function * gen(){
      yield one();
      yield two();
      yield three();
    }

    // 调用生成器函数
    let iterator = gen();
    iterator.next();
 
---------------------------------------
 
   // 模拟获取 用户数据-》订单数据-》商品数据
      function getUsers(){
        setTimeout(() => {
          let data = ‘用户数据‘;
          // 调用 next方法 并且将数据传入
          iterator.next(data);
        }, 1000);
      }

      function getOrders(){
        setTimeout(() => {
          let data = ‘订单数据‘;
          iterator.next(data);
        }, 1000);
      }

      function getGoods(){
        setTimeout(() => {
          let data = ‘商品数据‘;
          iterator.next(data);
        }, 1000);
      }

      function * gen(){
        let users = yield getUsers();
        console.log(users);
        let orders = yield getOrders();
        console.log(orders);
        let goods = yield getGoods();
        console.log(goods);
      }

    // 调用生成器函数
    let iterator = gen();
    iterator.next();
 
 
 

生成器和生成器函数 例子

标签:生成   数据   cti   div   time   out   ons   function   例子   

原文地址:https://www.cnblogs.com/eric-share/p/14776450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!