0

我的应用程序每 500 毫秒重新加载一次数据。我如何将代码更改为不是每 500 毫秒重新加载一次,而是在最后一次重新加载后等待 500 毫秒以触发新代码?

App = Ember.Application.create({
  ready: function() {
    var switchboard = App.Switchboard.find(switchboard_id);
    setInterval(function() {
      switchboard.reload();
    }, 500);
  }
});
4

1 回答 1

0

我刚刚做了类似的事情。您应该activate在您的路线上使用属性(http://emberjs.com/api/classes/Ember.Route.html#method_activate)。

查看此拉取请求:https ://github.com/chrmod/rowmark/pull/2/files

一些例子:

App.NoteRoute = Ember.Route.extend({
  activate: function() {
    this.interval = setInterval(function() {
      this.get('controller').set('toSave', true);
    }.bind(this), 5000);
  }
})

更新

我理解你错了。对此感到抱歉。

首先你需要知道findEmber ModelEmber Data返回promiseshttp://emberjs.com/blog/2013/05/28/ember-data-0-13.html

我认为你可以做这样的伎俩来实现:

App = Ember.Application.create({
  ready: function() {
    var switchboard;
    setInterval(function() {
      switchboard = App.Switchboard.find(switchboard_id).then(function(){
        setTimeout(function(){}, 499);
      });
    }, 1);
  }
});

首先,我们运行setIntervalinfinity 运行它loop。接下来在每个循环迭代中,我们找到Switchboard并且当Ember data从外部服务器加载那些运行的数据时function传递给then. 这个函数只需等待 499 毫秒 :)

于 2013-06-23T19:40:54.723 回答