如何在 Meteor 中停止和重新启动集合观察器



我希望能够在 Meteor 中停止和重新启动我的收藏上的观察者。

想象一下,我有以下观察者:

 // Imagine some collection of Blog posts "Posts"
  Posts.find().observe({
    changed: notifySubscribedUsers
  });
 // function notifySubscribedUsers() { ... }  
 //    is some function that will email everyone saying some post was updated

现在想象一下,我想更新很多帖子,但我不希望调用观察者。如何访问观察器,停止/暂停它们,然后重新启动它们(在数据库作业完成后)?

蒂亚

观察器返回一个句柄:

var handle = Posts.find().observe({
    changed: notifySubscribedUsers
});

然后你可以用以下命令停止它:

handle.stop()

不可能在传统意义上"暂停"它,如果你想暂停它,你可以忽略它给你的数据。

要在一个简洁的包装方法中执行此操作,您可以执行以下操作:

var handle;
var start = function() {
   if(handle) handle.stop();
   var handle = Posts.find().observe({
    changed: notifySubscribedUsers
   });
}
var stop = function() { if(handle) handle.stop }

或者把它放在一个集合上:

// posts.js collection file
Posts.startObservers = function startObservers() {
  Posts.observer = Posts.find().observe({
    change: notifySubscribedUsers // or some other function
  });
};
Posts.stopObservers = function stopObservers() {
  if(Posts.observer) {
    Posts.observer.stop(); // Call the stop
  }
};

// Trigger Somewhere else in the code
Posts.stopObservers();
MyTool.doWorkOnPosts(); // Some contrived work on the Posts collection
Posts.startObservers();

相关内容

  • 没有找到相关文章

最新更新