제너레이터/비동기 함수 구현

ᄋᄋ·2022년 3월 20일
0

promise로 구현

new Promise((resolve, reject) => {
  setTimeout(
    (x) => {
      let result = x;
      console.log(result);
      resolve(result);
    },
    1000,
    10
  )
}).then(result => {
  return new Promise((resolve, reject) => {
    setTimeout(
      (x) => {
        result *= x;
        console.log(result);
        resolve(result);
      },
      1000,
      20
    )
  })
}).then(result => {
  return new Promise((resolve, reject) => {
    setTimeout(
      (x) => {
        result *= x;
        console.log(result);
        resolve(result);
      },
      1000,
      30
    )
  })
}).then(result => {
  return new Promise((resolve, reject) => {
    setTimeout(
      (x) => {
        result *= x;
        console.log(result);
        resolve(result);
      },
      1000,
      40
    )
  })
});

generator로 구현

function calc(x, y) {
  setTimeout(
    () => {
      iter.next(x * y)
    },
    1000
  )
}

function*testGen() {
  const a = yield calc(1, 10);
  console.log(a);
  const b = yield calc(a, 20);
  console.log(b);
  const c = yield calc(b, 30);
  console.log(c);
  const d = yield calc(c, 40);
  console.log(d);
}

const iter = testGen();
iter.next();
profile
개발자A

0개의 댓글