在这里,我为服务调用创建了一个样本,它正在逐行工作Link for sample。
像这样: - JSONService.getJSON('file.json').then(function(data){
$scope.languages = data;
});
JSONService.getJSON('file1.json').then(function(data){
$scope.languages1 = data;
});
我不想单独发送。为什么因为如果它只有两个三个电话意味着罚款。但是 我需要做100多个电话。那个时候我不能一个接一个地做。 所以试试这个
JSONService.getJSON('file.json,file1.json').then(function(data){
$scope.languages = data[0];
$scope.languages1 = data[1];
});
在服务中使用拆分值并尝试逐个推送承诺并返回数组它不工作我不知道我在哪里错误可以任何人帮助我...
app.service('JSONService', function($http){
var data = [];
return{
getJSON: function(url){
var parameter=url.split(',');
for(var i=0; i< parameter.length; i++){
$http.get(parameter[i])
.then(function(response){
data.push(response);
});
}
return data;
}
};
});
答案 0 :(得分:1)
你需要使用承诺。这是您需要使用的服务
app.service('JSONService', function($http, $q){
var data = [];
return{
getJSON: function(url){
var urls = url.split(','),
promises = [];
for(var i=0; i< urls.length; i++){
var inPromise = $http.get(urls[i])
.then(function(response){
data.push(response.data);
});
promises.push(inPromise);
}
//return the promise from the $q.all, that makes sure, that all pushed promises are ready and return the chapters.
return $q.all(promises).then(function () {
return data;
});
}
};
});
同时更新了你的plnkr http://plnkr.co/edit/smMv9jPyMRNYX2AzAuRC?p=preview。这会将所有结果连接到一个数组对象languages
答案 1 :(得分:0)
<强> $ Q 强>
这就是$ q的用途。
app.service("JSONService", ["$http", "$q", function($http, $q){
return {
getJson: function(callback){
_urls = ["data1.json", "data2.json", "data3.json"],
_urlCalls = [],
_data = [];
angular.forEach(_urls, function(url) {
_urlCalls.push($http.get(url));
});
$q.all(_urlCalls).then(
function(results) {
results.forEach(function(e,i){
_data.push(e.data);
});
callback(_data);
},
function(errors) {},
function(updates) {}
);
}
}
}]);
<强>用法强>
来自控制器。
JSONService.getJson(function(response){
console.log(response);
}