MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

await

await연산자는 async function에서 Promise의 리턴값을 받기 위해 사용된다.
 

Syntax

[rv] = await expression;
expression
resolve되길 기다리는 Promise 또는 아무 값.
rv

Promise에 의해 resolve된 값. Promise가 아닌 경우엔 그 값 자신.

Description

awaitasync함수의 실행을 중단시키고, Promiseresolve값을 기다렸다가, resolve되면 다시 async함수를 실행시킨다. 만약 값이 Promise가 아니면 해당 값을 resolved Promise로 변환시킨다.

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

Examples

만약 Promiseawait에 넘겨지면, awaitPromiseresolve되길 기다렸다가, resolve되면 해당 값을 리턴한다.

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 2017 Draft (ECMA-262)
The definition of 'async functions' in that specification.
Draft Initial definition in ES2017.

Browser compatibility

Feature Chrome Firefox (Gecko) Internet Explorer Edge Opera Safari (WebKit)
Basic support 55 52.0 (52.0) ? ? 42 10.1
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support No support No support 52.0 (52.0) ? 42 10.1 55

See also

문서 태그 및 공헌자

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