Я просто мочу ноги с помощью Angularjs. У меня проблема, которая, как я думаю, имеет отношение к promises.
Скажем, я загружаю маршрут "А" , который через несколько контроллеров выполняет несколько аякс-запросов:
allSites = AllSites.query({ id:categoryID });
allSites.$promise.then(function(allSites){
//add stuff to the scope and does other things
//(including making another ajax request)
});
Затем у меня есть маршрут "B" , который делает его собственным запросом API через контроллер:
$scope.categories = Category.query();
Здесь factory служба, используемая в настоящее время по маршруту "A":
.factory('AllSites',function($resource){
return $resource('api/categorySites/:id');
});
Когда я сначала просматриваю маршрут "А" , а затем переключись на "В" до того, как "А" закончит загрузку, маршрут "В" сидит и ждет все, что первоначально запрошено в "А" , чтобы закончить (на самом деле запрос() запрос будет выполнен, но он не будет разрешаться до тех пор, пока тот, который находится от "А" , в этот момент продолжает существовать внутри .then()
, хотя мне он не нужен, поскольку я сейчас на другом маршруте.
Как вы можете видеть на моей временной шкале devtools, зеленая линия указывает, когда я переключился на маршрут "B" . Запрос на маршрут "B" не разрешался до тех пор, пока не будут выполнены указанные выше два запроса (запрос, который обычно выполняется очень быстро). (в этот момент я могу использовать представление в качестве пользователя). Затем после этого больше promises разрешается с маршрута "A".
Я искал всюду для ответа и могу найти людей, которые хотят "отложить" загрузку маршрута до тех пор, пока не будут решены promises. Но в моем случае я почти хочу наоборот. Я хочу убить эти запросы при переключении.
Здесь кто-то другой с тем же, неотвеченным вопросом: Отклонить ресурс Angularjs promises
Любая помощь приветствуется.