비동기 및 개요 async/await

tl;drasync/await<Promise>.then()보다 더 직관적인 구문에 익숙해지면 비동기 동작을 처리하는 좋은 방법입니다.

개요



구문 설탕!?



프라미스는 콜백에 대한 추상화입니다. 잘 모르는 경우에는 콜백에 대해 더 많이 배울 것을 제안합니다. async/await는 약속을 처리하고 특정 동작을 구현하는 구문입니다.

동기식 이점만 있습니까? 아니.



따라서 이러한 동작 중 하나는 호출의 준동기 실행입니다. 다른 데이터보다 먼저 특정 데이터가 필요한 경우 매우 유용할 수 있습니다. 그러나 데이터가 순차적으로 필요하지 않은 경우 데이터를 Promise.all()에 전달하여 병렬 동작을 허용할 수도 있습니다.

const data = await Promise.all([call1, call2]) 


위대한 Stack Overflow Answer은 Promise.all이 fail fast에 대해 매우 철저하고 간략하게 설명하는 방법을 다룹니다.

노드 12 async/await는 약속보다 빠릅니다...진심으로!



따라서 async/await 는 Promise의 구문 설탕이므로 Promise는 async/await 보다 빠르고 성능이 우수해야 합니다. 그렇지 않습니다. 깊이 파고들고 싶다면 rabbit hole I welcome you to it, I tried and my head hurts still lol

비동기



약속 생성기



자세한 내용은 다루지 않겠지만 async는 AsyncFunction을 반환합니다. 그러나 async를 사용하여 선언하면 함수가 훨씬 더 동기적으로 작동하므로 async function Something(){} 이 함수는 이제 약속을 반환합니다.



나는 또한 try/catch로 오류를 처리하기 위해 async/await를 사용하고 싶습니다.

async function someCall(someAPIURL) {
  const data = fetch(`${someAPIURL}`, { method: "GET" });
  return data;
}

let data;
  try {
data = await someCall(
`https://www.googleapis.com/books/v1/volumes?q=isbn:0747532699`);
} catch(error){
data = error
}

console.log(data)

좋은 웹페이지 즐겨찾기