javascript - 是否可以同步渲染dust.js模板?

标签 javascript asynchronous synchronization dust.js

我正在尝试为客户端 HTML/JS 模板系统编写一个适配器,以便在后台使用dust.js。不幸的是,API 期望渲染操作同步发生:渲染的输出应该从 render() 调用返回。 Dust.js 是异步的,并将渲染输出传递给回调函数。有没有办法解决这个问题,无论是在 Dust API 中还是通过一些疯狂的 Javascript hack?

最佳答案

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/)

<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并不了解。

关于javascript - 是否可以同步渲染dust.js模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848851/

相关文章:

linux - 在 Linux 上等待 infiniband 接收完成的最佳方法?

c# - 如何在 C# 应用程序之间同时同步数据刷新

c - OpenCL:内核之间的同步

javascript - spring mvc 环境中的 jQuery ajax 调用数据参数问题

javascript - 防止在不影响文本输入的情况下向下滚动时空格键的默认设置

string - 从 ".txt"文件中获取文本并将其保存在字符串变量 dart 中

.net - .NET中的生产者消费者链和线程调度

javascript - Yargs 帮助不显示所有帮助选项

javascript - 显示的空白页面 - Angular JS

javascript - 调用 FatSecret Sharp API 此时无法启动异步操作