DustJS 仅在需要渲染的资源(模板、部分)尚未全部加载时才会异步执行。
如果在执行该模板之前加载模板的所有依赖项,那么它将同步执行(据我所知)。所以你可以这样做:
var result;
dust.render("tpl", data, function(err, res) {
result = res;
});
console.log(result); // result will actually already be filled out if dustjs didn't
// have to go look for resources somewhere.
下面是一个更完整的示例:
(这是一个 jsfiddle 链接,您可以运行它:http://jsfiddle.net/uzTrv/1/ http://jsfiddle.net/uzTrv/1/)
<script type="text/javascript" src="dust.js"></script>
<script>
var tpl = dust.compile("Omg {#people} {.} {/people} are here! {>partial/}", "tpl");
var partial = dust.compile("I'm a partial but I've already been included so things still run {how}", "partial");
dust.loadSource(tpl);
dust.loadSource(partial);
var data = {
people: ["jim", "jane", "jack", "julie"],
how: "synchronously!"
};
var result;
dust.render("tpl", data, function(err, res) {
result = res;
});
console.log(result);
</script>
在某些情况下(除了我提到的)我可能是错的......我不知道关于dustjs的一切。