Automatically await every method call in async function
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.javascript
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)
`Use cases
This plugin was valuable for me in integration tests and nodejs utility scripts. See examples for working code.Installation
npm install --save-dev babel-plugin-auto-awaitUsage
$3
###### .babelrc
`json
{
"plugins": ["auto-await"]
}
`$3
babel-node --plugins auto-await script.js$3
`javascript
require("babel-core").transform("code", {
plugins: ["auto-await"]
});
`Gotchas
If you don't understand how Promise, async and await` work read this tutorial first.