web-dev-qa-db-ja.com

非同期静的関数を呼び出すときのSyntaxError

Node 8.3.0のasync/awaitで少し遊んでいますが、静的関数に問題があります。

MyClass.js

class MyClass {
  static async getSmthg() {
    return true;
  }
}
module.exports = MyClass

index.js

try {
  const result = await MyClass.getSmthg();
} catch(e) {}

このコードでは、SyntaxError: Unexpected token on MyClass。何故ですか? awaitで静的関数を使用できませんか、または間違えましたか?

ありがとうございました

8
NorTicUs

Await演算子は、非同期関数内でのみ使用できます。

(async () => {
  try {
    const result = await MyClass.getSmthg();
  } catch(e) {}
})()
7
Endless

メインスクリプトでawaitを使用することはできません...これを試してください

async function test(){
    try {
      const result = await MyClass.getSmthg();
      return result;
    } catch(e) {}
}
test().then(function(res){console.log(res)})

awaitasync関数でのみ使用でき、async関数は、promiseで呼び出されない場合、awaitを返します。

0
Salketer