Como priorizar solicitações no serviço angular $ http?
Estou trabalhando em um aplicativo com uma grande quantidade de carregamento lento de dados. Gostaria de priorizar solicitações HTTP com base no parâmetro 'priority'.
Este é o conceito de usá-lo.
$http.get(url, {params: query, priority: 1})
Eu estava pensando em usar interceptores $ http. Algo parecido:
angular.module('myModule')
.factory('httpPriorityInterceptor', function ($interval, $q) {
var requestStack = [];
return {
request: function (config) {
config.priority = config.priority || 3;
requestStack.push(config);
requestStack.sort(sortByPriority);
if (isFirstToGo(item)) return requestStack.pop();
deferred = $q.defer();
var intervalPromise = $interval(function(){
if (isFirstToGo(item)) {
deferred.resolve(requestStack.pop());
$interval.cancel(intervalPromise);
};
}, 100);
return deferred.promise;
}
};
});
Mas não posso retornar a promessa aqui. Alguma ideia?