2017-09-01 19 views
2

ノード8.3.0のasync/awaitで少し再生していますが、静的関数に問題があります。私はMyClassSyntaxError: Unexpected tokenを持って、このコードで非同期静的関数を呼び出すときのSyntaxError

MyClass.js

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

index.js

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

。 なぜですか? awaitで静的関数を使用することはできませんか、間違えましたか?

ありがとう

+0

MyClassをインポートしましたか? –

+2

'async'関数内でのみ' await'を使うことができます。 'index.js'のコードを関数でラップしますか? –

+0

多少悪い重複があります@SalketerそれはC#.netでも、それは類似点を持っています – Endless

答えて

3

await演算子は、非同期関数内でのみ使用できます。あなたが使用することはできません

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

メインスクリプトで待つ...この

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

awaitを試してみてくださいのみasync機能で使用することができ、かつawaitで呼び出されていない場合async機能はpromiseを返します。

+0

erm、ありがとうございます:訂正:あなたは "メイン"スクリプトで待つことができます...しかし、それは非同期関数内でのみ使用することができます。 – Endless

+0

はい、多分私の言い回しはそれほど良いものではなかったかもしれません...メインのスクリプトでは、グローバルスコープで直接実行されるコードを意味したかったのです。 – Salketer

+0

@Salketerは、あなたの答えが正しいように編集してください。 – chharvey

関連する問題