AsyncFunction

현재 번역은 완벽하지 않습니다. 한국어로 문서 번역에 동참해주세요.

AsyncFunction 생성자는 새로운 async function 객체를 만든다. 자바스크립트에서 모든 비동기 함수는 사실상 AsyncFunction 객체이다.

AsyncFunction이 전역변수가 아님에 주의하는게 좋다. 다음의 코드를 살펴보면서 한번 알아보자. 

Object.getPrototypeOf(async function(){}).constructor

Syntax

new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)

Parameters

arg1, arg2, ... argN
함수에 따라 그 인수들이 정해짐에 알아야한다. 이러한 인수들은 "x","theValue",or"a,b"와 같은 자바스크립트 식별자나 콤마로 구분된 문자열과 같은게 사용되어야 한다.
functionBody
함수 정의로 구성된 자바 스크립트 설명서를 포함하는 문자열이다.

Description

AsyncFunction 생성자를 통해 만들어진async function 객체는 함수가 만들어질때 분석된다 . 코드가 실행되지 않을 때도 작동하기 때문에 async function expression 으로 비동기함수를 정의하고 해당 코드에서 호출할 때보다 비효율적이다.

모든 인수들은 순서대로 생성된 함수의 파라미터의 식별자로서 함수안에서 다뤄진다.

Note: async functions created with the AsyncFunction constructor do not create closures to their creation contexts; they are always created in the global scope. When running them, they will only be able to access their own local variables and global ones, not the ones from the scope in which the AsyncFunction constructor was called. This is different from using eval with code for a async function expression.

AsyncFunction 생성자를 새로운 연산자없이 함수로서 호출하는 것은 새로운 생성자를 호출하는 것과 같다.

Properties

AsyncFunction.length
AsyncFunction 생성자의 길이 속성의 값은 1이다.
AsyncFunction.prototype
모든 비동기 객체에 속성을 추가하게끔 해준다.

AsyncFunction prototype object

Properties

AsyncFunction.constructor
초기값은 AsyncFunction이다.
AsyncFunction.prototype[@@toStringTag]
"AsyncFunction"을 반환한다.

AsyncFunction 인스턴스

AsyncFunction  AsyncFunction.prototype으로 부터의 메소드와 속성을 상속받는다. 모든 생성자와 마찬가지로, 누가나 생성자의 프로토타임 객체를 AsyncFunction 인스턴스로 만들기 위해 변경할 수 있다.

Examples

AsyncFunction 생성자를 통한 비동기 함수 제작

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

var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor

var a = new AsyncFunction('a', 
                          'b', 
                          'return await resolveAfter2Seconds(a) + await resolveAfter2Seconds(b);');

a(10, 20).then(v => {
  console.log(v); // prints 30 after 4 seconds
});

Specifications

Specification Status Comment
ECMAScript 2017 Draft (ECMA-262)
The definition of 'AsyncFunction object' 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 ?
Feature Android Android Webview Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support ? ? 52.0 (52.0) ? 42 ? 55

See also

문서 태그 및 공헌자

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