【问题标题】:Meteor - Refresh page every 5 min with new data set from REST APIMeteor - 使用来自 REST API 的新数据集每 5 分钟刷新一次页面
【发布时间】:2015-09-01 21:44:35
【问题描述】:

这就是我们想要实现的,我们需要每五分钟调用一次 API 并在流星中刷新一个页面,我们不希望使用 MongoDB;所以 API 调用是在模板渲染和输出显示之前直接进行的。

下面是代码 sn-p - 我每 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 还很陌生,有没有其他更好的方法我尝试将会话变量移动到服务器,但服务器端不支持会话。 我可以理解反应源“会话 - 可用列表”应该从渲染函数中移出,但我不确定使用什么方法。

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

【问题讨论】:

    标签: meteor


    【解决方案1】:

    即使您使用的是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 分钟。

    【讨论】:

    • 您好,感谢您的快速回复;它有效,是的,我只有 60000 毫秒(1 分钟)用于测试目的。
    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2016-11-10
    • 1970-01-01
    • 2017-06-11
    • 2018-05-31
    • 2016-07-10
    相关资源
    最近更新 更多