[英]Meteor Keeping track of server side var on the client side
第一个问题在这里,但我真的不知道该去哪里。 我在谷歌上找不到任何对我有帮助的东西。
我正在做大量的处理服务器端,我想跟踪状态并在客户端显示它。 为此,我有一个变量,我正在更新该过程。 为了跟踪它,我正在使用该客户端:
Template.importJson.onCreated(function () {
Session.set('import_datas', null);
this.autorun(function(){
Meteor.call('readImportState', function(err, response) {
console.log(response);
if (response !== undefined) {
Session.set('importingMessage',response);
}
});
})
});
我正在以这种方式从模板中读取它(在 template.mytemplate.helpers 中):
readImportState: function() {
return Session.get('importingMessage');
},
这是由meteor.call调用的服务器端代码:
readImportState: function() {
console.log(IMPORT_STATE);
return IMPORT_STATE;
}
客户端在开始时获取值,但以后永远不会更新......我在这里错过了什么? 如果有人能指出我正确的方向,那就太棒了。 谢谢 :)
在撰写本文时,在服务器和客户端之间共享反应状态的唯一简单方法是使用发布/订阅机制。 其他解决方案就像打一场艰苦的战斗。
这是您正在寻找的(不正确的)解决方案:
jobStates
,其中jobStates
是一个对象,以用户 ID 作为键,状态字符串作为其值。autorun
对Meteor.call
(没有强制autorun
再次执行的反应状态)-您实际上需要通过setInterval
每 N 秒轮询一次。jobStates
。setInterval
。jobStates
。jobStates
。 或者,(2) 中的方法应该只读取数据库而不是实际将jobStates
保存在内存中。这种方法复杂且容易出错。 此外,它无论如何都需要将状态写入数据库,以便处理重启和多个服务器实例。
find
或findOne
向用户显示状态。如您所见,发布/订阅机制更容易实现,因为大部分工作都是由meteor 为您完成的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.