JavaScript: 생성기란 무엇입니까(수율)
To produce something useful such as information or evidence
"Knowing about our past does not automatically yield solutions to our current problems.
yield results/benefits: The search for truth is beginning to yield fruitful results.""A letter found by the FBI last week may yield new clues."
이제 단어의 의미를 알았으므로 JavaScript에 대해 이야기해 보겠습니다.
제너레이터는 실행을 중간에 중지하고 일정 시간이 지나면 중지된 동일한 지점에서 다시 시작할 수 있는 일종의 특수 기능입니다. 기본적으로 functions 과 iterators 의 조합입니다.
생성기를 호출하면 객체
{value: value, done: true|false}
를 반환합니다. 여기서 value는 산출할 값이고 done은 .next()
함수가 값을 산출하거나 정의되지 않은 경우 생성기에 알려주는 부울입니다.생성기 함수를 생성하려면
*
를 사용해야 합니다.function* generator(i){ ... }
*
JavaScript에 iterator 객체가 반환될 것임을 알리고 일반 함수와 달리 실행을 바로 시작하지 않기 때문입니다.제너레이터 함수를 사용하는 방법을 살펴보겠습니다.
function* generator(i) {
yield i + 10;
yield i + 20;
yield i + 50;
}
const generate = generator(15);
console.log(generate.next()); // {value: 25, done: false}
console.log(generate.next()); // {value: 35, done: false}
console.log(generate.next()); // {value: 65, done: false}
console.log(generate.next()); // {value: undefined, done: true}
next()
함수를 호출하면 실행이 시작됩니다. 첫 번째yield
문을 찾을 때까지 실행하고 값을 산출합니다. 다시 호출되면 next()
는 다음 yield
문을 찾을 때까지 생성기 함수를 재개하고 이 주기는 더 이상 yields
가 없을 때 종료되고 {value: undefined, done: true}
로 끝납니다.제너레이터의
return
문은 done
이후의 true
속성yields
및 기타 모든 return
설정은 undefined
가 됩니다.function* generator(i) {
yield i + 10;
yield i + 20;
return;
yield i + 50;
}
const generate = generator(15);
console.log(generate.next()); // {value: 25, done: false}
console.log(generate.next()); // {value: 35, done: false}
console.log(generate.next()); // {value: undefined, done: true}
오류가 발생하는 경우에도 동일하게 적용됩니다. 다음
yields
은 모두 undefined
입니다.yield*
를 사용하여 다른 생성기 함수를 생성할 수도 있습니다.function* func1() {
yield 73;
}
function* func2() {
yield* func1();
}
const iterator = func2();
console.log(iterator.next()) // {value: 73, done: false}
console.log(iterator.next()) // {value: undefined, done: true}
장점
지연 로딩: 필요할 때만 값을 평가합니다.
메모리 효율성: 필요할 때만 값을 평가하므로 해당 값을 저장하는 데 필요한 메모리가 줄어듭니다.
위험
발전기를 사용하는 이유
솔직히 내 자신의 코드에 대한 사용 사례를 찾지 못했습니다. 인터넷을 검색하다가 dev에 대한 흥미로운 기사를 찾았습니다: .
JavaScript 생성기를 사용하여 API 최적화
IROEGBU! 생성기를 사용하여 API를 최적화하는 방법에 대한 놀라운 게시물을 작성했습니다. 확인할 수 있습니다here.
출처
Reference
이 문제에 관하여(JavaScript: 생성기란 무엇입니까(수율)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/evelynstender/javascript-what-are-generators-yield-5a8a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)