当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Javascript Generators和Iterators的区别用法及代码示例


生成器

生成器是 JavaScript 中的一种特殊类型的函数,可以在执行期间暂停和恢复。它们是在 function 关键字后面使用星号 (*) 定义的。生成器使用yield关键字将控制权交还给调用者,同时保留其执行上下文。生成器对于创建迭代器、异步代码和处理数据序列非常有用,而无需立即将所有数据加载到内存中。

例子:在此示例中,我们将看到一个简单的生成器函数,它生成序列中的值。

Javascript


function* GFG() { 
    yield 10; 
    yield 20; 
    yield 30; 
} 
const generator = GFG(); 
console.log(generator.next().value); 
console.log(generator.next().value); 
console.log(generator.next().value);
输出
10
20
30

迭代器

迭代器是 JavaScript 中具有特殊结构的对象。它们必须具有 next() 方法,该方法返回具有 value 和 done 属性的对象。 value 属性表示序列中的下一个值,done 属性指示是否还有更多值要迭代。迭代器通常用于迭代数组、映射和集合等数据结构。

例子:在此示例中,我们将看到一个迭代器循环遍历数组。

Javascript


const colors = ['red', 'green', 'blue']; 
const GFG = colors[Symbol.iterator](); 
console.log(GFG.next()); 
console.log(GFG.next()); 
console.log(GFG.next()); 
console.log(GFG.next());
输出
{ value: 'red', done: false }
{ value: 'green', done: false }
{ value: 'blue', done: false }
{ value: undefined, done: true }

生成器和迭代器的区别:

生成器

迭代器

带有星号 (*) 和 Yield 关键字的函数。

提供值序列的对象。

常用于异步操作。

通常用于循环遍历集合。

它可以在执行过程中暂停和恢复。

按顺序迭代数据元素。

显式定义并产生数据。

自动迭代现有的数据结构。

每个生成器都是一个迭代器。

每个迭代器都不是生成器。



相关用法


注:本文由纯净天空筛选整理自佚名大神的英文原创作品 Difference between Generators and Iterators in JavaScript。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。