Babel plugin for applying $digest
loop after await
expressions in AngularJS apps.
ES7 async
functions are supported by most modern browsers, so why transpile them to some
obscure ES5-compatible monstrosity? At least in development, leaving await
expressions
intact will result in shorter compile-times and better debuggability.
For AngularJS (v 1.x) users, though, this creates a problem because angular's $digest
loop
doesn't automatically run after await
expressions.
This plugin makes very lightweight transformations to await
expressions so that $digest
will be called after them.
Note: The plugin is mainly intended for development purposes and does not make
the code compatible with older browsers that don't natively support async/await
.
Instead, it aims to keep changes to the original source as minimal as possible.
Example input:
async function foo() {
const data = await getData();
console.log(data);
}
Output:
async function foo() {
const data = $$await((await getData()));
console.log(data);
}
npm i -D babel-plugin-angularjs-digest-await
.babelrc
{ "plugins": ["angularjs-digest-await"] }
Include node_modules/babel-plugin-angularjs-digest-await/$$await.js
to your build
using whatever method you use to bundle source files (Webpack, Gulp, etc.) or roll
your own global $$await
helper function if the provided default solution doesn't
work for your AngularJS app.
helperFunctionName
. Name of the helper function that gets added to the top of the file.
Default:$$await
.