这就是我们想要实现的目标,我们需要每五分钟调用一次API并刷新流星页面,我们不希望使用MongoDB;所以在模板渲染之前直接进行API调用并显示输出。
下面是代码片段 - 我每隔5分钟调用一次API,并在模板渲染过程中将其设置为session变量
Template.list.rendered = function(){
Meteor.setInterval(function(){
Meteor.call('getListFromAPI', function(error,data){
if(error){
console.log(error);
}
else{
Session.set('availableList', data);
}
});
}, 60000);
}
这是辅助函数,它返回" availableList"到HTML进行渲染 -
Template.list.helpers({
'getList': function(){
return Session.get('availableList');
}
});
问题: 它的工作原理意味着页面每刷新一次,但问题是第一次加载页面时,它会在渲染之前等待五分钟。
我对Meteor相当新,有没有其他更好的方法我尝试将会话变量移动到服务器但服务器端不支持会话。 我可以理解反应源"会话 - availableList"应该从渲染函数移动,但我不知道使用什么方法。
如果您有任何疑问,请与我们联系。
答案 0 :(得分:0)
即使您使用Meteor
方法,这实际上只是一个Javascript问题。有关如何解决问题,请参阅this post。
基本上你只需要在开始你的间隔之前调用你的方法,所以它看起来像这样......
Template.list.rendered = function(){
Meteor.call('getListFromAPI', function(error,data){
if(error){
console.log(error);
}
else {
Session.set('availableList', data);
}
}
Meteor.setInterval(function(){
Meteor.call('getListFromAPI', function(error,data){
if(error){
console.log(error);
}
else{
Session.set('availableList', data);
}
});
}, 60000);
}
另外,作为旁注,我很确定你已经知道了......但是60000
ms只有1分钟。