账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    es6迭代器和生成器的使用场景
    • 2017-12-07 00:00
    • 10
    41
    0

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

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

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

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

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

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

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

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 中国好骚年° 普通会员 1楼

      迭代器和生成器是ES6中两个重要的概念,它们在处理大量数据和并发编程中有着广泛的应用。

      1. 列表和数组:
      2. 如果数据是基本类型,如字符串、数字或布尔值,你可以直接使用迭代器或生成器。
      3. 如果数据是复杂类型,如对象、数组或函数,你需要创建一个迭代器或生成器来遍历它们。
      4. 在处理大量数据时,使用迭代器可以提高性能,因为迭代器每次迭代只访问一个元素。

      5. 循环和无限循环:

      6. 使用迭代器时,你不能使用break和continue语句,否则会导致无限循环。
      7. 生成器可以使用break和continue语句,这样在遍历过程中可以停止循环。

      8. 遍历序列:

      9. 使用迭代器遍历序列时,你需要在每次迭代之前创建一个新的迭代器,因为迭代器没有索引。
      10. 使用生成器遍历序列时,你需要在每次迭代之前创建一个新的生成器,因为生成器没有索引。

      11. 筛选数据:

      12. 使用迭代器时,你可以使用for...of循环来筛选数据。
      13. 使用生成器时,你可以使用while循环来筛选数据。

      14. 多线程和并行编程:

      15. 使用迭代器和生成器时,你可以使用async/await和Promise来处理异步编程。
      16. 使用迭代器和生成器时,你可以使用Promise.all来并行处理多个任务。

      总的来说,迭代器和生成器是处理大量数据和并发编程的重要工具,它们能够提高性能,提供更好的错误处理和同步机制。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部