Отмените существующие вызовы API при выполнении findQuery emberjs и ember data

#javascript #ember.js #ember-data

#javascript #ember.js #эмбер-данные

Вопрос:

У меня есть поле ввода, которое выполняет поиск в реальном времени. Он настроен так, что при каждом нажатии клавиши он выполняет запрос store.findQuery, который запускает запрос api. При его использовании я заметил, что мне нужно отменять ожидающие ajax вызовы api при выполнении каждого нового findQuery. Поскольку в конечном итоге возникает множество запросов, которые теперь не имеют значения, поскольку поисковый запрос изменился. Кто-нибудь знает, как это сделать?

Ответ №1:

Нет никакого встроенного способа сделать это. Сам вызов ajax не возвращается вам для этого типа использования. Я бы рекомендовал отменить ваши запросы на поиск, чтобы избежать создания тонны бесполезных запросов.

 App.IndexController = Em.Controller.extend({
  foo:undefined,
  callsToSearch: 0,
  actualSearch: 0,
  watchFoo: function(){
    this.incrementProperty('callsToSearch');
                  //context, method,     time that must elapse before calling method
    Em.run.debounce(this, this.doSearch, 300);
  }.observes('foo'),
  doSearch: function(){
    this.incrementProperty('actualSearch');
    // do the actual search here
  }
});
 

http://emberjs.jsbin.com/ciyebaqo/1/edit

Комментарии:

1. Для этого есть лучший способ использовать Ember.run.debounce, например: gist.github.com/gryzzly/50d6b78dd54bc2468d7a