ES6에서 generator 함수
generator 함수는 주로 비동기 프로그래밍 문제를 해결하고,
특징 (형식적)
function과 함수 이름 사이에는 "*"가 있고 함수 내부에는 다음과 같은 yield 표현식이 있습니다.
function * helloWorldGenerator() {
yield 'hello';
yield 'world';
return 'ending';
}
var hw = helloWorldGenerator();
generator 함수 호출은 역행기 대상의
next
방법을 호출해야 합니다.next 방법을 호출할 때마다 내부 바늘은 함수 머리나 지난번에 멈춘 곳부터 실행됩니다. 다음 yield 표현식이 나타날 때까지 다음과 같습니다.hw.next()
// { value: 'hello', done: false }
hw.next()
// { value: 'world', done: false }
hw.next()
// { value: 'ending', done: true }
hw.next()
// { value: undefined, done: true }
next
방법은 사실 수동으로generator를 호출하여 훑어보는 방법이다. for...of
문장을 사용하면 실습을 통해 자동으로 훑어볼 수 있다. 다음과 같다.function * foo(){
yield 1;
yield 2;
)
for(var a of foo()){
console.log(a); //1,2
}
next 함수의 매개 변수 문제
yield 표현식 자체는 반환 값이 없지만 next 방법은 하나의 매개 변수를 가져올 수 있다. 이 매개 변수는 이전 yield 표현식의 반환 값으로 여겨진다. 여기서 완일봉 대장부의 예를 인용한다.
function* f() {
for(var i = 0; true; i++) {
var reset = yield i;
if(reset) { i = -1; }
}
}
var g = f();
g.next() // { value: 0, done: false }
g.next() // { value: 1, done: false }
g.next(true) // { value: 0, done: false }
위 코드는 무한히 실행할 수 있는Generator 함수 f를 정의했습니다. 만약next 방법에 매개 변수가 없으면 yield 표현식에 실행될 때마다 변수reset의 값은 항상 undefined입니다.next 방법이 매개 변수true를 가지고 있을 때 변수reset은 이 매개 변수(즉true)로 리셋됩니다. 따라서 i는 -1과 같고 다음 순환은 -1부터 점차적으로 증가합니다.
이 기능은 매우 중요한 문법적 의의를 가지고 있다.Generator 함수는 정지 상태에서 실행 재개까지 상하문 상태 (context) 는 변하지 않습니다.next 방법의 매개 변수를 통해Generator 함수가 실행되기 시작한 후에 함수체 내부에 값을 계속 주입하는 방법이 있습니다.즉, Generator 함수가 실행되는 단계에 따라 외부에서 내부로 서로 다른 값을 주입하여 함수 행위를 조정할 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.