ES7 introduced async
and await
which are great. While working with them I've found that await
is usually superfluous. This babel plugin automatically puts await
in front of every function call in async
functions. In the result the code looks like if JS was synchronous.
const axios = require('axios')
async function loadAndParseData () {
// Because this function is marked as async we
// automatically await all promises
const url = 'https://api.github.com/users/ziolko'
const { data: user } = axios.get(url)
const { data: repos } = axios.get(user.repos_url)
// This function is not async, so it's not touched
function getRepoName(repo) {
return repo.nam
}
return repos.map(getRepoName)
}
loadAndParseData().then(console.log)
This plugin was valuable for me in integration tests and nodejs utility scripts. See examples for working code.
npm install --save-dev babel-plugin-auto-await
{
"plugins": ["auto-await"]
}
babel-node --plugins auto-await script.js
require("babel-core").transform("code", {
plugins: ["auto-await"]
});
If you don't understand how Promise
, async
and await
work read this tutorial first.