JavaScript의 생성기는 실행 중에 일시 정지 및 재개 될 수있는 특수 유형의 기능입니다. function*
구문을 사용하여 정의되며 yield
키워드를 사용하여 일시 중지 및 리턴 값을 사용합니다. 생성기의 주요 사용은 반복자를 생성하는 것입니다. 반복자는 일련의 값을 나타내는 객체이며 next()
메소드를 사용하여 해당 시퀀스를 통해 트래버스를 허용하는 것입니다.
생성기를 사용하여 반복기를 만들려면 yield
사용하여 일련의 값을 생성하는 발전기 기능을 정의합니다. 호출되면 생성기 함수는 반복자 객체를 반환합니다. 이 반복기에서 next()
메소드가 호출 될 때마다 생성기 함수는 다음 yield
value
에 도달 할 때까지 실행을 재개 done
두 가지 속성이있는 객체를 반환합니다.
다음은 생성기를 사용하여 반복자를 만드는 간단한 예입니다.
<code class="javascript">function* simpleGenerator() { yield 1; yield 2; yield 3; } const iterator = simpleGenerator(); console.log(iterator.next()); // { value: 1, done: false } console.log(iterator.next()); // { value: 2, done: false } console.log(iterator.next()); // { value: 3, done: false } console.log(iterator.next()); // { value: undefined, done: true }</code>
생성기는 JavaScript에서 반복자를 만드는 데 사용될 때 몇 가지 특정 이점을 제공합니다.
yield
사용하면 반복 논리를보다 자연스럽게 표현할 수 있습니다.for...of
loop과 직접 사용할 수 있으며 반복 가능한 시퀀스의 소비를 단순화 할 수 있습니다.JavaScript 생성기를 사용하여 사용자 정의 반복자를 구현하는 것은 다양한 실제 시나리오에서 유용합니다. 다음은 Fibonacci 시퀀스를 반복하는 데 사용되는 발전기의 예입니다.
<code class="javascript">function* fibonacciGenerator() { let a = 0, b = 1; while (true) { yield a; [a, b] = [b, ab]; } } const fibonacciIterator = fibonacciGenerator(); console.log(fibonacciIterator.next().value); // 0 console.log(fibonacciIterator.next().value); // 1 console.log(fibonacciIterator.next().value); // 1 console.log(fibonacciIterator.next().value); // 2 console.log(fibonacciIterator.next().value); // 3</code>
또 다른 실용적인 시나리오는 큰 파일을 한 줄씩 읽는 것과 같은 메모리가 제한된 대형 데이터 세트를 반복하는 것입니다.
<code class="javascript">function* fileLineGenerator(filePath) { const fs = require('fs'); const readline = require('readline'); const fileStream = fs.createReadStream(filePath); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity }); for await (const line of rl) { yield line; } } const lineIterator = fileLineGenerator('largeFile.txt'); // Use the iterator to process lines one by one for (const line of lineIterator) { console.log(line); }</code>
반복자 생성에 유용하게 만드는 JavaScript의 발전기의 구문 및 주요 기능에는 다음이 포함됩니다.
구문 :
function*
키워드를 사용하여 정의되며 함수가 생성기임을 나타냅니다.yield
키워드는 값을 생성하는 데 사용됩니다. yield
함수 실행을 일시 중지하고 발신자에게 값을 반환합니다.주요 기능 :
yield
까지 발전기를 재개하는 next()
메소드를 구현합니다.yield
로 실행을 일시 중지하고 next()
로 이력서를 사용하면 생성기의 흐름을 세밀하게 제어 할 수 있습니다.return
명령문을 사용하여 최종 값을 지정할 수 있습니다. 발전기가 return
문을 만나면 true
로 done
되며 결과 오브젝트의 value
속성에 반환 된 값이 포함됩니다.async/await
사용할 수 있습니다.다음은 이러한 기능을 보여주는 예입니다.
<code class="javascript">function* generatorExample() { try { yield 'First value'; yield 'Second value'; return 'Final value'; } catch (error) { console.error('Error caught in generator:', error); } } const iterator = generatorExample(); console.log(iterator.next()); // { value: 'First value', done: false } console.log(iterator.next()); // { value: 'Second value', done: false } console.log(iterator.next()); // { value: 'Final value', done: true } console.log(iterator.next()); // { value: undefined, done: true }</code>
이러한 구문 및 기능을 통해 생성기는 JavaScript에서 반복자를 작성하고 관리하는 강력한 도구입니다.
위 내용은 JavaScript의 생성기는 무엇이며 반복자를 만드는 데 어떻게 사용될 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!