2022. 1. 20. 11:57
반응형

우선 아래 예제를 확인한다.

결과는 기존 Promise 비동기 방식과 동일하다.

https://seongsland.tistory.com/272

 

Promise async await를 이용한 비동기 처리

샘플을 보면 대충 사용하는 방식을 알 수 있다. (색칠한 부분을 유의하면서 보도록 하자) function test1() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('test1 end'); }, 1000);..

seongsland.tistory.com

 

 

function test1() {
    setTimeout(() => {
        tests.next('test1 end');
    }, 1000);
}

function test2() {
    setTimeout(() => {
        tests.next('error');
    }, 1000);
}

function * getTests() {
    try {
        const t1 = yield test1();
        console.log("result : " + t1);

        if(t1 == "test1 end") {
            const t2 = yield test2();
            if(t2 == "error") {
                throw "test2 end";
            }

            console.log("result : " + t2);
        }
    } catch(err) {
        console.error("error : " + err);
    }
}

let tests = getTests();
tests.next();

 

 

  • 비동기를 처리할 함수에 *를 추가하면 Generator 함수로 처리된다.
  • Generator 함수는 .next();로 다음 yield 까지를 진행시킬 수 있다.
  • 마지막줄의 test.next(); 실행시 getTests() 함수의 첫 yield 까지 진행된다.
  • 그 이후 순차 적으로 비동기 방식으로 getTests()의 다음 yield 까지가 진행 되는 방식이다.
  • .next(값) 에 값을 넣어주면 왼쪽의 받는 변수에 대입시킬 수 있다.

 

반응형

'Front-Html > Javascript' 카테고리의 다른 글

룬 알고리즘 체크용 javascript 소스  (2) 2023.09.05
script background 호출  (0) 2022.05.18
Promise async await를 이용한 비동기 처리  (0) 2022.01.20
javascript querySelector  (0) 2021.03.03
javascript 암복호화 처리  (0) 2016.09.01
Posted by seongsland