2

您好我正在使用backbone.js 开发paly2.0 框架应用程序(使用java)。在我的应用程序中,我需要定期从数据库中获取表数据(用于显示即将发生的事件列表的用例以及是否应从列表中删除越过的旧事件)。我正在获取要显示的数据,但是问题是定期访问数据库。为此,我尝试根据这些链接使用 Backbone.js 轮询集合http ://kilon.org/blog/2012/02/backbone-poller/ 使用主干.js 轮询概念。但是他们没有从 db 轮询最新的集合。请建议我如何实现这一目标或任何其他替代方案?谢谢你的建议。

4

1 回答 1

8

Backbone 没有本地方法可以做到这一点。但是您可以实现长轮询请求,将一些方法添加到您的集合中:

// MyCollection
var MyCollection = Backbone.Collection.extend({
  urlRoot: 'backendUrl',

  longPolling : false,
  intervalMinutes : 2,
  initialize : function(){
    _.bindAll(this);
  },
  startLongPolling : function(intervalMinutes){
    this.longPolling = true;
    if( intervalMinutes ){
      this.intervalMinutes = intervalMinutes;
    }
    this.executeLongPolling();
  },
  stopLongPolling : function(){
    this.longPolling = false;
  },
  executeLongPolling : function(){
    this.fetch({success : this.onFetch});
  },
  onFetch : function () {
    if( this.longPolling ){
      setTimeout(this.executeLongPolling, 1000 * 60 * this.intervalMinutes); // in order to update the view each N minutes
    }
  }
});

var collection = new MyCollection();
collection.startLongPolling();
collection.on('reset', function(){ console.log('Collection fetched'); });
于 2012-07-30T17:33:32.310 回答