Heim  >  Artikel  >  Web-Frontend  >  Detaillierte Erklärung des $http-Cachings in AngularJS und wie mit mehreren $http-Anfragen_AngularJS umgegangen wird

Detaillierte Erklärung des $http-Cachings in AngularJS und wie mit mehreren $http-Anfragen_AngularJS umgegangen wird

WBOY
WBOYOriginal
2016-05-16 15:16:091501Durchsuche

$http ist ein Kerndienst in AngularJS, der zum Lesen von Daten von Remote-Servern verwendet wird. In tatsächlichen AngularJS-Projekten ist es oft notwendig, mehrere $http-Anfragen zu verarbeiten. Jede $http-Anfrage gibt ein Versprechen zurück. Wir können mehrere Versprechen in ein Array-Argument einfügen, das von der Methode $q.all() akzeptiert wird.

1. Behandeln Sie mehrere $http-Anfragen

angular.module('app',[])
.controller('AppCtrl', function AppCtrl(myService){
var app = this;
myService.getAll().then(function(info){
app.myInfo = info;
})
})
.service('myService', function MyService($http, $q){
var myService = this;
user = 'https://api...',
repos = '',
events = '';
myService.getData = function getData(){
return $http.get(user).then(function(userData){
return {
name:userData.data.name,
url:userData.data.url,
repoCount: userData.data.count
}
})
};
myService.getUserRepos = function getUserRepos(){
return $http.get(repos).then(function(response){
return _.map(response.data, function(item){
return {
name: item.name,
description:item.description,
starts: item.startCount
}
})
})
}
myService.getUserEvents = function getUserEvents(){
...
}
myService.getAll = function(){
var userPromise = myService.getData(),
userEventsPromise = myService.getUserRepos(),
userReposPromise = myService.getUserRepos();
return $q.all([userPromise, userEventsPromise, userReposPromise]).then(function(){
....
})
}
})

2.$http-Anfragecache

Der zweite formale Parameter der get-Methode von $http akzeptiert ein Objekt. Das Cache-Feld des Objekts kann einen Bool-Typ akzeptieren, um das Caching zu implementieren, also {cache:true}, oder es kann auch einen Dienst akzeptieren.

Erstellen Sie einen Dienst über die Factory-Methode und injizieren Sie den Dienst in den Controller.

angular.module('app',[])
.factory("myCache", function($cacheFactory){
return $cacheFactory("me");
})
.controller("AppCtrl", function($http, myCache){
var app = this;
app.load = function(){
$http.get("apiurl",{cache:myCache})
.success(function(data){
app.data = data;
})
}
app.clearCache = function(){
myCache.remove("apiurl");
}
})

Zusammenfassung des Herausgebers:

● Tatsächlich ist es $cacheFactory
, das den Caching-Mechanismus implementiert ● Platzieren Sie den Caching-Mechanismus über {cache:myCache}
in der aktuellen Anfrage ● $cacheFactory verwendet die Anforderungs-API als Schlüssel, sodass beim Löschen des Caches auch der Cache basierend auf diesem Schlüssel geleert wird

Die oben beschriebene Methode zum Zwischenspeichern und Verarbeiten mehrerer $http-Anfragen in AngularJS wird hoffentlich für alle hilfreich sein.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn