Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Meteor-使用RESTAPI中的新数据集每5分钟刷新一次页面_Meteor - Fatal编程技术网

Meteor-使用RESTAPI中的新数据集每5分钟刷新一次页面

Meteor-使用RESTAPI中的新数据集每5分钟刷新一次页面,meteor,Meteor,这就是我们试图实现的,我们需要每五分钟调用一个API,并在meteor中刷新一个页面,我们不希望使用MongoDB;因此,API调用是在模板呈现和显示输出之前直接进行的 下面是代码片段-我每5分钟调用一次API,并在模板呈现期间在会话变量中设置它 Template.list.rendered = function(){ Meteor.setInterval(function(){ Meteor.call('getListFromAPI', function(error,data)

这就是我们试图实现的,我们需要每五分钟调用一个API,并在meteor中刷新一个页面,我们不希望使用MongoDB;因此,API调用是在模板呈现和显示输出之前直接进行的

下面是代码片段-我每5分钟调用一次API,并在模板呈现期间在会话变量中设置它

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的新手,有没有其他更好的方法可以将会话变量移动到服务器上,但服务器端不支持会话。 我可以理解被动源“session-availableList”应该从呈现函数中移除,但我不确定使用什么方法


如果您有任何问题,请告诉我。

即使您使用的是
Meteor
方法,这实际上只是一个Javascript问题。请参阅以了解如何解决此问题

基本上,你只需要在你开始你的间隔之前调用你的方法,这样看起来就像这样

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分钟。

Hi,感谢您的快速回复;它工作了,是的,我只有60000毫秒(1分钟)用于测试。