Перезагрузка модели Ember в интервале

У меня есть модель User, которая имеет свойства широты и долготы, которые используются для отображения текущего местоположения пользователя на карте.

App.User = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),
    email: DS.attr('string'),
    jobs: DS.hasMany("App.Job"),
    latitude:   DS.attr('number'),
    longitude: DS.attr('number'),
    measuredAt: DS.attr('date'),
});

Каков наилучший способ автоматического определения свойств широты и долготы с сервера на каждый заданный интервал? Поддерживает ли ember-данные такой вариант использования? Я не могу найти образцы с этой функциональностью. Я думаю, мне нужно будет переопределить метод поиска для класса User с setInterval в нем, правильно ли это?

Спасибо

Ответы

Ответ 1

Для тех, кто сталкивается с этим вопросом сейчас - не используйте setInterval, это, как было показано, вызывает серьезные утечки памяти.

Вместо этого используйте Ember, собственный Ember.run.later.

Смотрите также:

Редактировать: 3 февраля 2019 - Обновление неработающих ссылок.

Ответ 2

EDIT: см. ответ Дмитрия Загидулина.

Итак, я понял это. На данный момент все, что мне нужно, это переопределить метод didLoad на модели, в будущем мне, вероятно, понадобится более сложное решение, но на данный момент это достаточно.

didLoad: function(){
  var self = this;
  setInterval(function() {self.reload()}, 5*60*1000); //every 5 minutes
}

В случае, если кому-то нужно перезагрузить больше моделей, хорошим решением было бы реализовать это как Mixin.

Ответ 3

Теперь модель имеет метод .reload(), который вы можете использовать в обратном вызове setInterval. См. fooobar.com/info/209106/...

P.S. Смотрите # 545.