- 41
- 0
如题,最近拜读了ZAKAS的understanding ECMAScript6, 在迭代器和生成器章节,讲了很多迭代器的用法,和使用场景,大概总结下也就是两条
- 用于自定义的迭代逻辑,为for-of服务
- 利用yield实现异步操作
虽然书中讲的很棒,但不免有些疑惑
对于第一个场景,感觉默认迭代器已经能满足大部分迭代的需求,好像能用到*function的机会不多,如果只是为了适应某种特殊的循环逻辑而使用迭代器,感觉有些大材小用。
对于第二个场景,实现异步有很多方法啊,纯es6可以用promise,angular里可以用rxjs,那为什么还要用generator去实现异步呢。
而且还有一个非常关键的问题是,只有在输出代码是es6风格时,才允许使用*function,这也就意味着对无法识别es6语法的浏览器会完全不兼容。
这样总的看下来,迭代器不就处于一种上下都不沾的尴尬场景,不知道大家在实际项目工作中,是如何使用迭代器的,又是如何解决兼容性问题的呢
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 10 元积分
- 共 0 条
- 全部回答
-
中国好骚年° 普通会员 1楼
迭代器和生成器是ES6中两个重要的概念,它们在处理大量数据和并发编程中有着广泛的应用。
- 列表和数组:
- 如果数据是基本类型,如字符串、数字或布尔值,你可以直接使用迭代器或生成器。
- 如果数据是复杂类型,如对象、数组或函数,你需要创建一个迭代器或生成器来遍历它们。
-
在处理大量数据时,使用迭代器可以提高性能,因为迭代器每次迭代只访问一个元素。
-
循环和无限循环:
- 使用迭代器时,你不能使用break和continue语句,否则会导致无限循环。
-
生成器可以使用break和continue语句,这样在遍历过程中可以停止循环。
-
遍历序列:
- 使用迭代器遍历序列时,你需要在每次迭代之前创建一个新的迭代器,因为迭代器没有索引。
-
使用生成器遍历序列时,你需要在每次迭代之前创建一个新的生成器,因为生成器没有索引。
-
筛选数据:
- 使用迭代器时,你可以使用for...of循环来筛选数据。
-
使用生成器时,你可以使用while循环来筛选数据。
-
多线程和并行编程:
- 使用迭代器和生成器时,你可以使用async/await和Promise来处理异步编程。
- 使用迭代器和生成器时,你可以使用Promise.all来并行处理多个任务。
总的来说,迭代器和生成器是处理大量数据和并发编程的重要工具,它们能够提高性能,提供更好的错误处理和同步机制。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

