# 참고용
1. 제네레이터
ES6(ES2015) 제네레이터(generator)는 특수한 종류의 함수로, 호출될 때마다 중간 결과를 반환하고 호출이 끝난 후에도 상태를 유지할 수 있습니다. 제네레이터 함수는 function* 키워드를 사용하여 정의하며, yield 키워드를 사용하여 값을 반환합니다. 제네레이터는 반복자(iterator) 프로토콜을 따르기 때문에, for...of 루프와 같은 반복문에서 사용할 수 있습니다.
제네레이터 함수 예시:
function* simpleGenerator() {
yield 1;
yield 2;
yield 3;
}
const generatorInstance = simpleGenerator();
console.log(generatorInstance.next()); // 출력: { value: 1, done: false }
console.log(generatorInstance.next()); // 출력: { value: 2, done: false }
console.log(generatorInstance.next()); // 출력: { value: 3, done: false }
console.log(generatorInstance.next()); // 출력: { value: undefined, done: true }
제네레이터를 사용한 피보나치 수열 생성 예시:
function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
const fibonacciGenerator = fibonacci();
for (let i = 0; i < 10; i++) {
console.log(fibonacciGenerator.next().value);
}
제네레이터는 비동기 프로그래밍에서 유용하게 사용될 수 있습니다. 예를 들어, async/await가 도입되기 전에는 비동기 작업을 처리하기 위해 제네레이터와 프로미스(Promise)를 함께 사용하기도 했습니다.
제네레이터를 사용하면 코드의 실행 흐름을 더 잘 제어할 수 있으며, 이를 통해 무한한 데이터 스트림, 특정 조건에서만 실행되는 코드 블록 등 다양한 상황에서 효과적으로 사용할 수 있습니다.
2. 프로미스
ES6(ES2015)에서 도입된 프로미스(Promise)는 비동기 작업의 최종 결과를 나타내는 객체입니다. 프로미스는 비동기 작업이 완료된 후 결과를 처리하는 데 사용되며, 작업이 성공적으로 완료되었는지 실패했는지 여부를 쉽게 확인할 수 있습니다. 프로미스를 사용하면 콜백 지옥(callback hell)을 피하고, 비동기 코드를 더 깔끔하게 작성할 수 있습니다.
프로미스는 주로 다음 세 가지 상태를 가집니다.
const myPromise = new Promise((resolve, reject) => {
// 비동기 작업을 수행합니다.
});
Mysql 힌트 종류 (0) | 2023.04.15 |
---|---|
JAVA XML 파싱방법 XmlPull 이용 (0) | 2023.04.09 |
JAVA XML 파싱하는 방법 (0) | 2023.04.09 |