2019-9-2 Promise와 Async Await의 관계

  • async await에서 await하나는 promise의 then과 같은 의미를 지니고 있다.
function hello () {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('hello')
    }, 1000)


  })
}

function hi () {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('hi')
    }, 1000)
  })
}

// runP();
runAsync();

function runP () {
  hello().then((data) => {
    console.log(data) // hello
    return hi()
  }).then((data) => {
    console.log(data) // hi
  })
    .catch(err => {console.error(err)})
}

async function runAsync () {
  try {
    const data = await hello(); // then;
    console.log(data);
    const d = await hi(); // then
    console.log(d);
  } catch (err) {
    console.error(err);
  }
}

  • runP를 실행을 시키면, hello이 실행이 되고 그 다음에 hi가 실행이 된다. 이것이 Promise기반이기때문에 이해하기가 수비다.
  • runAsync에서도 data가 먼저 찍히고 그 다음에 d가 출력디 된다. setTimeout의 시차를 발생시켜도 마찬가지다.
  • async await에서 await끼리 잘 사용을 안해봤는데, 덕성님 덕분에 모를 수 있던 부분을 숙지했다.
Written on September 2, 2019