Dev./javascript

[JS] 클래스에 async getter 작성하기

인쥭 2022. 10. 7. 15:31
반응형

다음과 같이 getter에 async 키워드를 작성할 경우에는 Syntax Error가 발생한다.

SyntaxError: Unexpected identifier

class MyClass {
    #props = { hello: 'world' };
    
    async get result() { // SyntaxError: Unexpected identifier
        return this.#props;
    }
}

(async function main() {
    const myInstance = new MyClass();
    
    const result = await myInstance.result;
    console.log(result);
})();

이 경우, 그냥 Promise를 반환하면 간단하게 async getter를 구현할 수 있다.

class MyClass {
    #props = { hello: 'world' };
    
    get result() {
        return Promise.resolve(this.#props);
    }
}

(async function main() {
    const myInstance = new MyClass();
    
    console.log(
        await myInstance.result
    ); // { hello: 'world' }
})();