Если мы проверим gulpfile
, использованный для сборки этого проекта, мы увидим что источник передается через babel
.
gulp.task('build', ['clean'], function() {
return gulp
.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(babel({
experimental: true,
loose: 'all',
optional: [
'bluebirdCoroutines',
'runtime'
]
}))
});
Babel — это транспилятор, который позволяет вам писать код ES6+ и транспилировать его обратно в ES5.
Babel превратит ваш код ES6+ в дружественный код ES5, так что вы сможете начать использовать его прямо сейчас, не дожидаясь поддержки браузера.
Если мы проверим документы на сайте Babel, мы увидим, что в разделе ES7 experimental section, есть реализация для asyncFunctions
.
Эти ключевые слова являются частью спецификации ES7, но они не стабилизировались. Следовательно, они включены в качестве экспериментальных функций Вавилона.
Проще говоря, функция async
позволит вам await
выполнить вызов, который возвращает promise
.
async function() {
// flow will be suspended here until
// the promise returned by someFunction is resolved
await someFunction()
}
ES6 будет включать так называемые генераторы, которые делают то же самое, но не специфичны для промисов. Вы можете начать видеть ключевое слово yield
или функции, объявленные подобным образом function* () {}
. Это так называемые генераторные функции.
Есть особенно хорошая статья от PouchDB, который объясняет реальный пример использования этих функций.
person
Dan Prince
schedule
25.04.2015