자바스크립에서 클래스의 생성자는 비동기적으로 실행될 수 없다. 이에 대한 효과적이고 좋은 대처는 생성자 대신 static factory 패턴을 사용한다. 예를 들어서 생성자를 다음 코드로 대체한다.
class App { ... static async create() { const app = new App(); await app._setupThreeJs(); app._setupCamera(); app._setupLight(); app._setupControls(); app._setupModel(); app._setupEvents(); return app; } ...
참고로 _setupThreeJs 매서드는 async로 선언되어 있다.
그리고 App 클래스의 객체를 생성할 때는 new App()이 아닌 다음 코드를 사용한다.
const app = await App.create();
와!