Угловое и метеорное мерцание при загрузке страницы

0

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

Я добавил это в свойство resolve состояния (используя ui-router):

campaigns: ($q) => {
  var deferred = $q.defer();
  Meteor.subscribe('campaigns', {
    onReady: deferred.resolve,
    onStop: deferred.reject
  });
  return deferred.promise;
}

Мерцание остановилось, но я действительно не понимаю этот код. Может ли кто-то, кто понимает угловой, нарушить эту ситуацию/отложить ситуацию?

Просто не знаю, почему это сработало. Благодарю.

Теги:
angular-meteor

1 ответ

1
Лучший ответ

$ q - угловая реализация обещаний.

в очень короткой частичной речи обещание имеет два обратных вызова, которые разрешаются при возвращении данных; функция разрешения, если вызов завершается успешно и отклоняется, если вызов завершается с ошибкой. любые данные, которые он получает, будут переданы в эти функции (по сути дела откладываются. ресольвы (данные) или отложен.редукция (ошибка)). $ q.defer() позволяет нам позже назначить разрешение/отклонения.

функция подписки на метеориты принимает несколько аргументов. имя строки коллекции, функцию, возвращающую массив аргументов, которые должны быть переданы в коллекцию, и объект/функция. объектная часть финального аргумента ожидает функции onReady и onStop и будет выполнять эти функции и передавать все полученные данные. мы переходим к нашим обратным вызовам здесь.

наконец, мы вернем обещание. resol.campaigns будет обещанием, которое мы можем получить от использования вызова.then(successCallback, failCallback). метеор обрабатывает это за кулисами.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню