Nunjucks await
Filter
Brings async/await
functions to your Nunjucks templates.
Usage
Add the filter to your Nunjucks environment, and prepare an async
function:
const awaitFilter = const environment = nunjucks { // This can be any async operation, like fetching data // from an external API, or getting records from a database. return }
Use an async
function in your Nunjucks template:
The weather in Toronto is {{ getWeather('Toronto') | await }}
And then render the template however you normally would (as an Express view engine, using env.renderString
, etc). getWeather
will resolve and the result will show in the rendered template. That's all there is to it!
How it works
It's actually very small, here's almost all of the code:
{ try // The called function returns a Promise, which we // now `await` until its done const result = await functionPromise // Then we call the Nunjucks async filter callback catch error // And if the `functionPromise` throws an error // Nunjucks will pick it up here }
Using Nunjucks Async Filters, this brings the await
keyword to Nunjucks templates.