2016-04-25 6 views
1

私は非同期化したクラスの関数を作ろうとしていますが、webpackはクラスをコンパイルするときにエラーが出ます。es6 javascriptクラスでasync/awaitを使用するにはどうすればよいですか?

私のコードは、このようなものになるだろう:

class MyClass { 

    constructor(apiService) { 
     this._apiService = apiService; 
    } 

    async updateInformation() { 
     await this._apiService.updateInformation(); 
     // .. do more stuff I have to do 
    } 
} 

WebPACKのは、私を与えることエラーです:

Module build failed: SyntaxError: Unexpected token 

(非同期の後に 'U' に予期しないトークンポイント)

+0

バンドリング/トランスバータの設定は何ですか? babel6、webpack ... –

+1

'async/await'はES6の一部ではないので、(唯一の)ES6をサポートする環境では動作しません。 ES6コードを最初に変換する必要があります(たとえば、Babelまたは再生器を使用)。 –

答えて

1

そう、私は自分の.babelrcファイルにasync/awaitを含むstage-0プリセットを追加していないことに気付かなかった。

コードはうまく動作します。

EDIT:RGrahamが言うように、ステージが-3

+0

'stage-0'はストローマン提案のみです。それには、不平等化された行動が多く含まれていますが、* ES6ではありません。これをBabelプリセットで行う場合は、[stage-3](https://babeljs.io/docs/plugins/preset-stage-3/) – CodingIntrigue

0

async/awaitES7提案の一部です。あなたのコードをES6/ES5にコンパイルするにはbabel/traceurを使用する必要があります

+3

ES7は既に完成しています(つまり、新しい機能はありません追加される予定です)。 'async/await'は来年早々にリリースされる予定です。 –

関連する問題