es6迭代器和生成器的使用场景

如题,最近拜读了ZAKAS的understanding ECMAScript6, 在迭代器和生成器章节,讲了很多迭代器的用法,和使用场景,大概总结下也就是两条

  1. 用于自定义的迭代逻辑,为for-of服务
  2. 利用yield实现异步操作

虽然书中讲的很棒,但不免有些疑惑

对于第一个场景,感觉默认迭代器已经能满足大部分迭代的需求,好像能用到*function的机会不多,如果只是为了适应某种特殊的循环逻辑而使用迭代器,感觉有些大材小用。

对于第二个场景,实现异步有很多方法啊,纯es6可以用promise,angular里可以用rxjs,那为什么还要用generator去实现异步呢。

而且还有一个非常关键的问题是,只有在输出代码是es6风格时,才允许使用*function,这也就意味着对无法识别es6语法的浏览器会完全不兼容。

这样总的看下来,迭代器不就处于一种上下都不沾的尴尬场景,不知道大家在实际项目工作中,是如何使用迭代器的,又是如何解决兼容性问题的呢

阅读 6.1k
1 个回答

生成器并不是实现异步操作而是可以改造异步为同步
可以看一下co函数的源码几十行
利用Generatorpromise异步操作改成同步,实现async await的效果

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题