Marko和Koajs:为什么我的asynchronous片段渲染不起作用?
我试图让渐进渲染在Marko和Koajs工作。
首先,我使用request-promise模块为JSON数据馈送做出承诺。
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加载一个模板,在这个模板中,数据以数据formsinput
// 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"; })
最后,在我的模板中,我使用asynchronous片段来指示页面的部分应该asynchronous加载:
<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>
不幸的是,在asynchronous片段块中没有加载任何内容。 甚至没有占位符。
如何让占位符显示,然后将数据放在我的模板中?
问题解决了! 我需要返回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; }); };
- Nodejsasynchronous混乱
- 如何在node.js + Express.js + mongodb应用程序上asynchronous启动摩卡testing
- 不能用asynchronous做http请求并等待
- 等待来自Async,Protractor,nodejs的响应
- nodejsasynchronous:多个相关的HTTP API调用
- node.js中的信号量 – 使用计数器variables
- 为什么我的variables在函数内部修改后没有改变? – asynchronous代码引用
- Node.js – parsing简单的JSON对象和访问键和值
- 有没有可能限制节点中的asynchronous任务?