听起来像一个疯狂的要求,但我认为这是可以做到无论用:
- 定制,发布收集
- 本机无功无功
我想2。可能更容易,所以我会试着描述一下。
//...
GetTasks: function (id) {
// Establishes reactive dependency
var tasks = Tasks.find({some query}).fetch();
// Use empty object as initial values
var reactives = tasks.map(function (task) { return new ReactiveVar(task); });
// Now reactives[0] corresponds to task 1, reactives[1] to task 2, etc.
// Unset any values you want to appear later:
reactives[3].set({});
reactives[4].set({});
// Schedule them to be set later (using 5 seconds here)
Meteor.setTimeout(function() {
reactives[3].set(task[3]);
reactives[4].set(task[4]);
}, 5000);
return reactives.map(function (r) { return r.get(); });
}
这将运行每次任务数据从服务器发布,并您的查询相匹配。这意味着您每次都会设置一个超时时间。
可能是你想要做的是:
- 跟踪什么超时已被设置
- 每次GetTasks运行检查,如果你已经设置超时该任务或不
- 决定是否你想覆盖它,或者离开它
请记住旧的超时将保留旧的值。如果新运行提供新值,则旧值可能过时。
另外需要注意的是,在执行过程中我给出的旧任务并没有保留。如果任务的位置可能发生变化,您可能会想要这样做 - 例如,如果任务被删除。然后,您可以测试旧版本与新版本的变化,并决定要做什么。