gpt4 book ai didi

javascript - 延迟 meteor 功能加载

转载 作者:行者123 更新时间:2023-12-03 11:24:38 26 4
gpt4 key购买 nike

我的 html(meteor Web 应用程序)中有:

{{#each GetTasks _id}}

这会为每个_id运行GetTasks函数(顶部还有另一个each循环)。因此,如果我有 5 个项目,它将运行 GetTasks 5 次。每个函数 GetTasks 都会返回类似

return Tasks.find({some query});

是否有办法延迟 5 次中的某些 GetTasks,例如第 3 次和第 4 次?我想更快地开始显示第 1 次、第 2 次和第 5 次的信息,然后在超时后加载有关第 3 次和第 3 次的信息第四(就像模仿延迟加载风格)。谢谢

最佳答案

听起来像是一个疯狂的要求,但我认为这可以通过以下方式完成:

  1. 自定义、已发布的集合
  2. 局部 react 变量

我认为 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 时都会检查您是否已为该任务设置超时
  • 决定是否要覆盖它,还是保留它

请记住,旧的超时将保留旧的值。如果新的运行提供了新值,则旧值可能已过时。

还要注意,在实现中我已经给出的旧任务没有保留。如果任务的位置可能发生变化,例如任务被删除,您可能会想要执行此操作。然后,您可以测试新旧之间的变化并决定要做什么。

关于javascript - 延迟 meteor 功能加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26973078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com