2016-04-25 2 views
1

Так что я пытаюсь сделать функцию класса I, сделанного async, но webpack дает мне ошибку при компиляции класса.Как использовать async/await в классе javascript es6?

Мой код будет выглядеть примерно так:

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 

(Неожиданная точки лексемы 'и' после того, как в асинхронном)

+0

Какова установка вашего комплекта/транспилятора? babel6, webpack ... –

+1

'async/await' не является частью ES6, поэтому он не будет работать в средах, которые поддерживают только ES6. Вам нужно сначала преобразовать код ES6 (например, с помощью Babel или регенератора). –

ответ

1

Да, я не понял, что не добавил в свой файл .babelrc предустановку stage-0, которая включает async/wait.

Код работает просто отлично.

EDIT: Как говорит RGraham, сценическое-3

+0

'stage-0' предназначен только для предложений соломы. Он включает в себя множество незавершенного поведения и * определенно не * ES6. Если вы хотите сделать это с помощью предустановки Babel, это будет [stage-3] (https://babeljs.io/docs/plugins/preset-stage-3/) – CodingIntrigue

0

async/await является частью ES7 предложение. Итак, вы должны использовать babel/traceur, чтобы скомпилировать код для ES6/ES5

+3

ES7 уже финализирован (это означает, что никаких новых функций будут добавлены). 'async/await' входит в будущую версию, скорее всего в следующем году. –