gpt4 book ai didi

javascript - 马科和 Koajs : Why is my async-fragment rendering not working?

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:01 26 4
gpt4 key购买 nike

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

首先,我使用 request-promise 模块对 JSON 数据源做出 promise 。

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 加载一个模板,其中提要作为数据进入

// 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 来指示应该异步加载页面的部分:

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

不幸的是,异步片段 block 中没有加载任何内容。甚至连占位符都没有。

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

最佳答案

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

解决方案:

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;
});
};

关于javascript - 马科和 Koajs : Why is my async-fragment rendering not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33818478/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com