setTimeOut안에 비동기 함수

setTimeOut안에 비동기 함수

async / await into setTimeout

회사 프로젝트에서 React.js를 사용하고 있는데, 왠만하면 비동기로 코드를 짜려고 한다. 시간 차를 두어 비동기 함수를 호출하고 싶었는데 setTimeout 함수 안에 비동기 관련 코드를 넣으면 에러가 난다. stack-overflow에 찾아보니 쉽게 setTimout할 수 있는 코드가 있었다. 나중에 또 이런 일이 있다면 검색하는 시간을 아끼기 위해…
async componentWillMount() {
  setTimeout(() => {
    const result = await getResult(); // call API
  }, 1000);
} // Error
위의 코드는 실행되지 않는다. 에러가 난다.
async componentWillMount() {
  let  wait = ms => new Promise(resolve => setTimeout(resolve, ms));

  await wait(1000);

  const result = aweait getResult(); // call API
}
// OK
위의 코드는 에러도 나지 않고, 잘 동작한다!

참고

stackoverflow

댓글

가장 많이 본 글