[javascript]9同期、非同期-async&await


async & await


async


mozilla - async
  • async関数宣言は非同期関数を定義する.
  • Promiseキーワードを使わずに自動的に戻るPromise
  • async function fetchUser() {
        return 'kim';
    }
    
    const user = fetchUser();
    console.log(user);

    await

  • async加算された関数でのみ使用できます.
  • async 함수의 실행을 일시 중지전달 된 Promise의 해결을 기다림async 함수의 실행을 다시 시작하고 완료후 값을 반환
  • awaitキーワードが関係のない2つ以上Promsie所要時間が増加した場合、Promiseオブジェクトを作成し並列に実行することができる.
    async function A() {
      await delay(1000);
      return 'A';
    }
    async function B() {
      await delay(1000);
      return 'B';
    }
    
    async function C() {
      // 아래와 같이 선언 시 연관 없는 두 Promise로 인해
      // 실행 시간 증가(1초 + 1초 = 2초)
      // const a = await A();
      // const b = await B();
      
      // 아예 Promsie 객체를 만들어서 병렬적으로 실행
      const APromise = A();
      const BPromise = B();
      const a = await APromise;
      const b = await BPromise;
      return `${a} + ${b}`;
    }
    
    C().then(console.log);
    // 1초 후 'A + B' 출력