Edited at

コンストラクタにasyncを指定するとシンタックスエラーになる

More than 1 year has passed since last update.


状況

class MyClass {

async constructor() {
this.aaa = 'AAA'
this.bbb = await hogehoge();
}
}

const ccc = async () => {
const ddd = await new MyClass();
};

Uncaught SyntaxError: Class constructor may not be an async method


対処法

class MyClass {

constructor() {
this.aaa = 'AAA'
}
async init() {
this.bbb = await hogehoge();
}
}

const createMyClass = async () => {
const obj = new MyClass();
await obj.init();
return obj;
};

const ccc = async () => {
const ddd = await createMyClass();
};

非同期処理をコンストラクタから分離する。