Dust.js 无极数组

Dust.js Promise Array

我对解析 Dust.js

中数组的承诺有疑问

假设我有一个像这样的 Dust.js 函数(这将在稍后做其他事情,但为了一个简单的例子),它解析一个数组:

var doSomethingAsync = new Promise(function(resolve, reject) {
  // do a thing, possibly async, then…
  setTimeout(function(){

        var items = [{
            name: 'One',
        }, {
            name: 'Two',
        }, {
            name: 'Three',
        }];

        resolve(items);
    }, 5000);
});

res.stream('admin/index', {
    "async": doSomethingAsync
});

我的模板是这样的:

{#async}
    {name}
{/async}

它似乎没有打印出您所期望的。使用 contextDump 帮助程序打印:

[ { "name": "One" }, { "name": "Two" }, { "name": "Three" } ]

任何人都知道我做错了什么,这是预期的行为还是错误?

原来你必须自己循环...

{#async}
    {#.}
        {name}
    {/.}
{/async}

你的回答是正确的。目前整个数组被推送到上下文中,因此您必须遍历上下文:

{#async}
    {#.}
        {name}
    {/.}
{/async}

但这是fixed in Dust 2.7.2

使用该版本,您可以按照预期迭代返回的数组。

{#async}
    {name}
{/async}