JS Generator 정보
11676 단어 JavaScriptgeneratortech
개요
동기화 처리를 사용할 때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
나한텐 처음 기억하기 힘든 행동이야.
기억 방법
어떤 역할에 도움이 되는지 파악하는 게 적절하다고 생각해요.
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라고 합니다.
오늘은 여기까지.수고하셨습니다.
Reference
이 문제에 관하여(JS Generator 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/chromel/articles/0fd9904aa9bcfc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)