首页 > 其他 > 详细

模拟es6的generator

时间:2020-05-24 14:34:24      阅读:58      评论:0      收藏:0      [点我收藏+]

//es6 

   

function* letters() {
  console.log(‘a‘);
  yield ‘a‘;
  console.log(‘b‘);
  yield ‘b‘;
  while (true) {
    console.log(‘c‘);
    yield ‘c‘;
  }
}

 //polyfilling es5

  

function letters() {
  var state = 0;
  return {
    next: function() {
      switch (state) {
        case 0:
          console.log(‘a‘);
          state = 1;
          return {
            value: ‘a‘, // Return the first yielded value.
            done: false
          };
        case 1:
          console.log(‘b‘);
          state = 2;
          return {
            value: ‘b‘, // Return the second yielded value.
            done: false
          };
        case 2:
          console.log(‘c‘);
          return {
            value: ‘c‘, // Return the third yielded value... forever.
            done: false
          };
      }
    }
  };
}

  简述:上述方法只是 通过肉眼观察原函数 的内部代码 来编写polyfilling 的代码,可以从原函数的3个yield和polyfilling之后的3个case可以看出,

       故猜想:真正的polyfill应该是代码根据原函数生成yield,先将原函数toString,用正则匹配来分析yield, 对于原函数里面的循环(for while ....),应对应生成迭代器

      上述猜想待完善中......

     代码搬运至  https://gu.illau.me/posts/polyfilling-generators/

模拟es6的generator

原文:https://www.cnblogs.com/tony-stark/p/12950808.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!