Async 와 await

[!NOTE] 요약 await 키워드 뒤에 작성된 코드도 promise를 반환하고 이 promise의 해결(반환)이 올때까지 기다렸다가 다음 라인으로 넘어간다는 뜻

async는 함수 전체에 대한 비동기 특성을 명시하는 것이고, await는 특정 비동기 연산이 완료될 때까지 기다리도록 하는 것입니다. await를 사용하면 해당 부분의 코드는 “동기적으로 동작하는 것처럼” 보이도록 하는 것

asyncawait는 JavaScript의 ES2017(ES8)에 도입된 키워드로, 비동기 프로그래밍을 좀 더 간결하고 가독성 좋게 작성할 수 있게 해줍니다. 특히 Promise를 기반으로 동작하는 코드에 대해 동기적인 방식처럼 작성할 수 있게 도와줍니다.

  1. async
    • async 키워드는 함수 앞에 위치하며, 해당 함수가 비동기적으로 동작한다는 것을 표시합니다.
    • async로 선언된 함수는 항상 Promise를 반환합니다. 반환 값이 Promise가 아닌 경우에도, JavaScript는 이 값을 자동으로 Promise로 감싸서 반환하게 됩니다. 예시
      async function fetchUserData() {
        // ...
      }
      
  2. await
    • await 키워드는 async 함수 내부에서만 사용될 수 있으며, Promise의 해결을 기다립니다.
    • awaitPromise가 완료될 때까지 함수의 실행을 일시 중지시키고, Promise의 결과 값을 반환하게 됩니다. 만약 Promise가 거부될 경우, 거부된 이유를 던지게 됩니다.
    • 이를 통해 Promise 체인의 .then().catch 메서드를 사용하는 대신에, 동기적인 코드 스타일로 비동기 처리를 할 수 있게 됩니다.

This line appears after every note.

Notes mentioning this note


Here are all the notes in this garden, along with their links, visualized as a graph.

ReadmeTips설명자료 모음나의 유의 사항과 고치고자 했던점Throw error기능 목록제출용 소감문회고록1주차 피드백BoardStyle guide checklist기능 요구 사항 숫자 야구입출력 요구 사항제출용 소감문 숫자 야구 게임프로그래밍 요구 사항회고록기능 목록요구 사항제출용 소감문 자동차 경주 게임회고록Todo'기능 목록제출용 소감문 크리스마스 프로모션회고록Scpc몰입해본 경험성공한 프로젝트들1. 효과적인 학습 방식과 경험2. 성장 중 겪은 실패와 극복3. 오랜 시간 몰입했던 경험 그리고 도전4. 원하는 프로그래머 모습우테코 증빙자료효과적인 학습 방법과 결과프론트엔드 기말과제 리팩토링CssDiv에 그림자 효과 넣기FlexBabelBigintBooleanClassIife(즉시 실행 함수 표현식)Javascript style guideJavascript typesJavascriptLinked list(연결 리스트)MapMark and sweepNull typeNumberObject ForeachObject.defineproperty()ObjectPromiseReference countingSetShift 연산String.indexof(), string.includes()StringSymbolUndefined typeV8 가비지 컬렉션Async 와 awaitCall 과 apply 메서드Callback 함수Private 프로퍼티SomeThrowWrapper object가비지 컬렉션객체의 attribute기본 매개변수 문법데이터 속성메모리 관리메모리 생명 주기배열생성자(constructor)원시값접근자 속성함수 호이스팅(hoisting)함수(function)함수를 정의하는 법함수와 메소드의 차이힙과 스택Class component(클래스형 컴포넌트)DomFunction component(함수형 컴포넌트)JsxReact domReact elementReact hooksReact 생명주기ReactSpaVirtual domPropsUseeffect렌더링리렌더링마운트함수형 컴포넌트와 클래스형 컴포넌트의 차이점Github page로 배포GithubReadme 파일 작성CloneFork커밋 메시지 작성 규칙Brain stormingWeb3마이너스마트 컨트랙트페이로드(payload)Markdown(md)MermaidMvc 패턴도메인 로직비즈니스 로직Jest란Tdd(테스트 주도 개발)모킹(mocking)이란스파이(spying)이란AbiDtdNode jsReadmeThreadXml런타임 환경스키마유클리드 호제법최대공배수 알고리즘Todo list옵시디언 웹 주소