ES2017 Функции Async/await - работают ли они только с promises?

Я начал использовать async/await функции ES7 в моих js-приложениях (переделанных Babel).

Исправить меня, если не так, но работают ли они только с Promises? Если да, это означает, что мне нужно обернуть обычные функции обратного вызова в Promises (то, что я сейчас делаю btw).

Ответ 1

Текущее (и, скорее всего, окончательное) предложение async/await ожидает promises и desugars в нечто вроде bluebird Promise.coroutine с await, играющим часть yield.

Это имеет смысл, так как promises представляет значение + время, и вы ожидаете, что это значение станет доступным. Примечание. await также ожидает выполнения обещаний, подобных конструкциям, на всех других языках, которые включают его как С# или Python (3.5+).

Обратите внимание, что преобразование API обратного вызова в promises очень просто, а некоторые библиотеки предлагают инструменты для этого в одной команде. См. Как преобразовать существующий API обратного вызова в promises для более подробной информации.