JavaScript迭代器和生成器用于按需生成消费数据,提升遍历灵活性、节省内存、明晰异步流程;支持自定义结构遍历、延迟计算、异步控制及可组合数据管道。
JavaScript迭代器和生成器主要用于按需生成和消费数据,让遍历逻辑更灵活、内存更节省、异步流程更清晰。
当你实现一个类(比如链表、树或范围集合),默认无法用 for...of 遍历。通过部署 [Symbol.itera
tor] 方法返回一个迭代器对象,就能支持标准遍历语法。
生成器函数(用 function* 声明)会自动返回迭代器,且内部执行是暂停/恢复式的。这意味着值只在被取用时才计算,适合处理大数据流或无限序列。
生成器配合 Promise 和手动执行器(或历史上的 co 库),曾是 async/await 出现前组织异步代码的重要方式。虽然现在多用 async/await,但理解其底层逻辑仍有价值。
利用迭代器的惰性特性,可以像 Unix 管道一样链式处理数据:过滤、映射、截断等操作都返回新迭代器,全程不创建中间数组。
不复杂但容易忽略:它们不是语法糖,而是 JavaScript 提供的底层协议,让语言能统一处理同步/异步、有限/无限、内存内/流式等各种数据源。