JS Generator 정보

개요


동기화 처리를 사용할 때generator를 사용하는 옵션이 있는 것 같습니다.
그 사용법을 잘 모르지만 드디어 깨달았으니 글을 써 보아라.

어떤 동작이냐면요.


우선 행동을 보기 위해 견본을 쓴다.
generator1.js
function* generatorFunc(arg){
	console.log(arg);    //->"Start"
	let inner_variable1 = yield "returned_value1";
	console.log(inner_variable1);    //->"to use1"
	let inner_variable2 = yield "returned_value2";
	console.log(inner_variable2);    //->"to use2"
}

let gf = generatorFunc("Start");

let value1 = gf.next("to vanish");
let value2 = gf.next("to use1");
let value3 = gf.next("to use2");

console.log(value1);    //->{value: "returned_value1", done: false}
console.log(value2);    //->{value: "returned_value2", done: false}
console.log(value3);    //->{value: undefined, done: true}
이 작업을 수행한 후
result
Start
to use1
to use2
{value: "returned_value1", done: false}
{value: "returned_value2", done: false}
{value: undefined, done: true}
.

무슨 일이 있었죠?


이 코드를 읽는 비결은generatrFunc의 yeld를 파악하는 것이다.
변수 gf에서 함수를 설정하면 "Start"매개변수가 전달되지만 아무 작업도 수행되지 않습니다.
gf.next ("to vanish") 를 진행하면 첫 번째 yield에 실행하고 "Start"를 출력합니다.
첫 번째 집행, 두 번째 집행, 첫 번째 집행.
모두 두 가지 일을 하면 기억해라.그것은
4
  • yield 오른쪽에 있는 값을 대상에 처음으로 패키지하고 외부 호출로 되돌려줍니다
  • 4
  • 두 번째, =첨부된 내부 변수 innervariable 방면 gf.next () 는 실행할 때의 매개 변수를 대입합니다
  • 뭘까요?한 번 지나서 다음 실행에 따라 다시 돌아왔다.
    나한텐 처음 기억하기 힘든 행동이야.

    기억 방법


    어떤 역할에 도움이 되는지 파악하는 게 적절하다고 생각해요.
    exec_part
    let value1 = gf.next("to vanish");
    let value2 = gf.next("to use1");
    let value3 = gf.next("to use2");
    
    함수는 처리된 결과를 원하여 집행하는 것을 가리킨다.
    위 execpart의 함수 실행은 gf입니다.next ("to vanish") 를 실행할 때, 첫 번째 yeld의 오른쪽 값인 "returned value1"을 대상에게 되돌려주고,value1에 대입합니다.그때는'to vanish'는 아무 일도 하지 않았다.
    다음 gf.next ("to use 1") 의 실행 중, "to use 1"을 첫 번째 yeld의 위치에 넣으면, 결과
    내부 변수 innervariable1에 "to use1"을 추가합니다.
    다음 데이터의 가공을 순차적으로 수용하고 수행하려는 의도라는 것이다.
    exec_part2
    let value1 = gf.next("to vanish");
    let value2 = gf.next(value1);
    let value3 = gf.next(value2);
    
    이렇게 하면 일반 모니터의 편의성을 실감할 수 있다.
    외부 변수value1에 값을 입력하고 결과를 반영하는 함수를 실행합니다.넥스트(value1)로 진행하고 두 번째 yield에서value2를 되돌려줍니다.이렇게 마음 편하게
    우선 그것을 실례로 표시하기 위해 아래의 코드를 미리 싣는다.
    generator2.js
    function* generatorFunc(arg){
    	console.log(arg);    //->"Start"
    	let inner_variable1 = yield arg+"_abc";
    	console.log(inner_variable1);    //->"Start_abc"
    	let inner_variable2 = yield inner_variable1+"_def";
    	console.log(inner_variable2);    //->"Start_abc_def"
    }
    
    let gf = generatorFunc("Start");
    
    let value1 = gf.next("to vanish");
    let value2 = gf.next(value1.value);
    let value3 = gf.next(value2.value);
    
    console.log(value1);    //->{value: "Start_abc", done: false}
    console.log(value2);    //->{value: "Start_abc_def", done: false}
    console.log(value3);    //->{value: undefined, done: true}
    
    이 결과는 아래와 같다.
    제3차 gf.next () 의 실행에서 처리가 완료되었음을 표시합니다. 사실이라는 것을 잊지 마십시오.value에 관해서는 내부 변수에 들어갈 필요가 없기 때문에undefined라고 합니다.
    오늘은 여기까지.수고하셨습니다.

    좋은 웹페이지 즐겨찾기