Async Execution
By default, templates are compiled to be executed synchronously, but Moe-js can also build
an async template function that returns a Promise. This lets you use await statements within the
template itself. To compile an async template, pass either true or { asyncTemplate: true } as
the second parameter to any of the compile functions.
// Compile an async template (Note use of "await model.promise")
let template = moe.compile(`Promise result: {{await model.promise}}`, {
asyncTemplate: true // Indicates we want an async template
});
// Create a simple promise that delivers a string
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve("Hello"), 1000);
});
// Execute the template (Note use of "await" on the template function)
let result = await template({
promise: promise,
});
assert(result == "Promise result: Hello");
Note: don't confuse async templates with the moe.compileFileAsync function:
moe.compileFileAsyncreturns a promise for the compiled template function.options.asyncTemplateallow the use ofawaitwithin the template itself.
