延迟流星函数加载
Delays meteor function loading
我在我的html(Meteor Web应用程序)中有:
{{#each GetTasks _id}}
这将为每个_id运行 GetTasks 函数(顶部每个循环还有另一个循环)。因此,如果我有 5 个项目,它将运行 GetTasks 5 次。每个函数 GetTasks 都返回类似的东西
return Tasks.find({some query});
有没有办法将 GetTasks 延迟 5 次中的某些时间,例如第 3 次和第 4 次?我想更快地开始呈现第 1、2 和 5 个的信息,然后在超时加载有关第 3 个和第 4 个的信息(例如模仿延迟延迟加载样式)。谢谢
听起来像是一个疯狂的要求,但我认为这可以通过以下方式完成:
- 自定义的已发布集合
- 局部反应变量
我认为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 运行时,请检查您是否已经为该任务设置了超时
- 决定是要覆盖它还是保留它
请记住,旧超时将保留旧值。 如果新运行提供新值,则旧值可能已过时。
另请注意,在实现中,我给出的旧任务没有保留。 如果任务的位置可能发生变化,例如,如果任务被删除,则可能需要执行此操作。 然后,您可以测试新旧的变化,并决定要执行的操作。
相关文章:
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 加载所有内容时的加载函数
- 通过加载函数发送一个变量
- Javascript - 加载函数运行时未定义的变量
- 如何在插入按钮时使其自身加载函数
- 如何在 onclick 事件后加载函数
- jQuery加载函数后,jQuery UI自动完成功能不起作用
- 在jquery循环幻灯片中使用加载函数而不是就绪函数
- 使用JavaScript加载函数初始化幻灯片
- 得到"未定义“;从外部javascript加载函数
- 如何重用 ajax 表单加载函数打开多个选项卡,每个选项卡具有不同的参数
- 我有一个用于 onclick 的窗口加载函数 如何添加 onblur 事件并合并为一个
- 当我在 reactjs 中单击按钮时如何加载函数
- 如何使用窗口加载函数使我所有的 javascript 都外部化
- JQuery 加载函数页面加载问题
- 加载函数在满足 jQuery 中的 if 条件后不起作用
- j查询重新加载函数
- 加载函数修订以检查表单的值
- 未正确调用 jQuery 图像加载函数
- jQuery在表单仅提交一次后加载函数