Javascript 延迟流星函数加载
我的html(meteor web应用程序)中有: 这将为每个_id运行gettask函数(顶部有另一个each循环)。 因此,如果我有5个项目,它将运行5次。每个函数返回如下内容Javascript 延迟流星函数加载,javascript,meteor,Javascript,Meteor,我的html(meteor web应用程序)中有: 这将为每个_id运行gettask函数(顶部有另一个each循环)。 因此,如果我有5个项目,它将运行5次。每个函数返回如下内容 return Tasks.find({some query}); 是否有任何方法可以将gettask延迟5次,例如第3次和第4次?我想开始更快地显示第1次、第2次和第5次的信息,然后在超时后加载关于第3次和第4rth的信息(如immiting lazy delayed load style)。 谢谢听起来像是一个疯
return Tasks.find({some query});
是否有任何方法可以将gettask延迟5次,例如第3次和第4次?我想开始更快地显示第1次、第2次和第5次的信息,然后在超时后加载关于第3次和第4rth的信息(如immiting lazy delayed load style)。
谢谢听起来像是一个疯狂的要求,但我认为这可以通过以下两种方式实现:
//...
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(); });
}
每次从服务器发布任务数据并且任务数据与您的查询匹配时,都会运行此操作。这意味着您每次都要设置一个超时
您可能想做的是:
- 跟踪已设置的超时
- 每次运行GetTask时,检查您是否已经为该任务设置了超时
- 决定是覆盖它,还是保留它
//...
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(); });
}