首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Marko和Koajs:为什么我的异步片段渲染不起作用?

Marko和Koajs:为什么我的异步片段渲染不起作用?
EN

Stack Overflow用户
提问于 2015-11-20 11:29:19
回答 1查看 479关注 0票数 1

我正在尝试让渐进式渲染在Marko和Koajs中工作。

首先,我使用request-promise模块为JSON数据提要做出承诺。

代码语言:javascript
复制
rp = require('request-promise')

function getDataFeed() {

    var url = "http://api.dronestre.am/data";
    var options = {
        url: url,
        headers: { 'User-Agent': 'request' },
    };

    rp(options).then(function(result) {

        var info = JSON.parse(result);
        return info.strike;
    });
};

然后,我使用koa路由器和Marko加载一个模板,提要将作为数据放入其中

代码语言:javascript
复制
// router method to serve first visualization
router.get('/first', function *() {

    let data = {
        strikes : getDataFeed()
    };

    this.body =  marko.load('./views/first.marko').stream(data);
    this.type = "text/html";
})

最后,在我的模板中,我使用async-fragment来指示应该异步加载页面的一部分:

代码语言:javascript
复制
<async-fragment data-provider='data.strikes' var='strikes' client-reorder='true'>
    <async-fragment-placeholder>
        <p>Loading...</p>
    </async-fragment-placeholder>
    <for each="strike in strikes">
        <tr>
            <td>${strike.number}</td>
            <td>${strike.country}</td>
            <td>${strike.date}</td>
            <td>${strike.narrative}</td>
            <td>${strike.town}</td>
            <td>${strike.deaths}</td>
            <td>${strike.target}</td>
            <td>${strike.lat}</td>
            <td>${strike.lon}</td>
        </tr>
    </for>  
</async-fragment>

不幸的是,async-fragment块从来没有加载过任何东西。甚至连占位符都没有。

我如何让占位符显示,然后让数据在我的模板中取代它的位置?

EN

回答 1

Stack Overflow用户

发布于 2015-11-20 11:47:23

问题解决了!我需要在getDataFeed()中返回promise函数

解决方案:

代码语言:javascript
复制
rp = require('request-promise')

function getDataFeed() {

    var url = "http://api.dronestre.am/data";
    var options = {
        url: url,
        headers: { 'User-Agent': 'request' },
    };

   return rp(options).then(function(result) {

        var info = JSON.parse(result);
        return info.strike;
    });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33818478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档