await연산자는 Promise를 기다리기 위해 사용됩니다. 이는 async function 내부에서만 사용될 수 있습니다.
 

구문

[rv] = await expression;
expression
기다릴 Promise 혹은 아무 값입니다.
rv

Promise에 의해 fulfill되는 값이 반환됩니다. Promise가 아닌 경우에는 그 값 자체가 반환됩니다.

설명

await 문은 async함수의 실행을 중단시키고, Promise가 fulfill되거나 reject되기를 기다리고, 다시 async함수를 실행시킵니다. 이때  await 문의 값은 Promise 에서 fulfill된 값이 됩니다.

만약 Promisereject되면, awaitreject된 값을 throw합니다.

await 연산자 다음에 나오는 문의 값이 Promise가 아니면 해당 값을 resolved Promise로 변환시킵니다.

예제

만약 Promiseawait에 넘겨지면, awaitPromise가 fulfill되기를 기다렸다가, 해당 값을 리턴합니다.

function resolveAfter2Seconds(x) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(x);
    }, 2000);
  });
}

async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

만약 값이 Promise가 아니라면, 해당 값은 resolvePromise로 변환되며 이를 기다립니다.

async function f2() {
  var y = await 20;
  console.log(y); // 20
}
f2();

만약 Promisereject되면, reject된 값이 throw됩니다.

async function f3() {
  try {
    var z = await Promise.reject(30);
  } catch(e) {
    console.log(e); // 30
  }
}
f3();

Specifications

Specification Status Comment
ECMAScript Latest Draft (ECMA-262)
The definition of 'async functions' in that specification.
Draft Initial definition in ES2017.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support55 Yes52 ?4210.1
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support5555 Yes524210.16.0

See also

문서 태그 및 공헌자

이 페이지의 공헌자: NessunKim, HomoEfficio, undefcat
최종 변경: NessunKim,