聽起來像一個瘋狂的要求,但我認爲這是可以做到無論用:
- 定製,發佈收集
- 本機無功無功
我想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運行檢查,如果你已經設置超時該任務或不
- 決定是否你想覆蓋它,或者離開它
請記住舊的超時將保留舊的值。如果新運行提供新值,則舊值可能過時。
另外需要注意的是,在執行過程中我給出的舊任務並沒有保留。如果任務的位置可能發生變化,您可能會想要這樣做 - 例如,如果任務被刪除。然後,您可以測試舊版本與新版本的變化,並決定要做什麼。