Ich habe eine Fabrik, die unter Objekt
Rückkehr kehrt {
getCuisines: function(cuisineNames){
if (typeof cuisineNames !== 'string' && typeof cuisineNames !== undefined) {
throw new Error('Cusine type should be a string or should not have value');
}
cuisineNames = cuisineNames || options.term;
cuisineNames = cuisineNames.split(',');
var promises=[];
cuisineNames.forEach(function(cuisine){
var defered = $q.defer();
options.term = cuisine + ' '+ 'food';
$http.get(url,{params: options}).success(function(data){
defered.resolve(data);
localStorageService.setDishes(cuisine,data.businesses);
console.log("Cuisine ="+cuisine);
console.log(data);
});
promises.push(defered.promise);
});
return $q.all(promises);
}
};
ich dieses Werk von einem Controller rufen
MyFactory.getCuisines('American,Indian,Italian,Mexican,Japanese,Korean').then(function(data){
console.log(data);
});
Verwendung Wenn Die Anwendung wird ausgeführt. Ich bekomme alle Küchen wie Koreanisch. was der letzte Parameter bestanden hat.
UPDATE 1:
ich meinen Code unten Code aktualisiert. Entfernte $ q. pushed $ http zu verspricht Array immer noch nicht funktioniert. Gleiche Antwort. Ich überprüfte meinen Server, alle Anrufe, die zum Server gemacht werden, sind für koreanisches Essen.
return {
getCuisines: function(cuisineNames){
if (typeof cuisineNames !== 'string' && typeof cuisineNames !== undefined) {
throw new Error('Cusine type should be a string or should not have value');
}
cuisineNames = cuisineNames || options.term;
cuisineNames = cuisineNames.split(',');
var promises=[];
cuisineNames.forEach(function(cuisine){
options.term = cuisine + ' '+ 'food';
console.log(options.term); //I see different cuisine name here
promises.push($http.get(url,{params: options}).success(function(data){
localStorageService.setDishes(cuisine,data.businesses);
console.log(data);
}));
});
return $q.all(promises);
}
};
Zunächst einmal, warum verwenden Sie '$ q' Service für '$ http' serivce ?? Der HTTP-Dienst gibt standardmäßig eine Zusage zurück. Siehe diese Frage: http://stackoverflow.com/questions/36631601/angularjs-simple-then-or-q-service-in-async-requests –
seien Sie vorsichtig, es kann nur 6 Ajax Anrufe gleichzeitig (Navigator Einschränkung). Sie sollten besser 1 Anruf verwenden, um alle Ergebnisse zu erhalten. –