Async/Await for ES6 with Generators and Promises
Implements async/await for ES6 (specifically for Node 6.x which is the current Node versions on the three big FaaS providers: AWS Lambda, Google Cloud Functions and Azure Functions).
See Async/Await with Generators and Promises for a blog post about this project.
Install
Using npm:
$ npm install es6-async
In Node.js:
const makeAsync =
Usage
Write code the same way you write code with async
/await
with the difference to use makeAsync
instead of the async
keyword and replace await
with yield
. Also note that makeAsync
takes a generator defined with the function*
syntax.
const makeAsync = const timeout = const random = Promise const asyncFunc =
The same code written using async/await:
{ await return await }
Caveat
I've found one small difference that needs to be pointed out:
const resultGen = Promise + 100const resultAsync = await Promise + 100// resultGen = "[object Promise]100"// resultAsync = 200
In the case of yield
, Javascript first evaluates Promise.resolve(100) + 100
which it does by converting both to strings and then sends that to yield
. The solution to this is to wrap it in parenthesis.
const resultGen = Promise + 100// resultGen = 200
Using with Google Cloud Functions
const makeAsync = const timeout = const random = Promise const asyncFunc = moduleexportsrandomGen =