您好我们有一个调用服务功能的角度js控制器:
var decodedValue = StaticTableService.DecodificaAllergeni(listObj);
此服务函数获取整数数组。我们想要在StaticTableService
的字符串中解码这个整数。 decodedValue
将是一个字符串数组,其中每个字符串都是来自int的解码字符串。如果int number为0
则不被解码。
此功能
DecodificaAllergeni: function(allergeni)
{
var elenco = Array();
var loopPromises = []; //Promise for loop
for(i=0;i<allergeni.length;i++)
{
var idAllergene = allergeni[i];
if(idAllergene!=0)
{
console.log("StaticTable IdAllergene: "+idAllergene);
loopPromises.push(AllergeniService.get(idAllergene));
console.log(idAllergene);
}
}
//Wait all
$q.all(loopPromises).then(function () {
console.log('forEach loop completed.');
});
},
我声明了promise数组并等待$q.all
(...)等待所有呼叫结束。
每次调用都发送到AllergeniService.get(idAllergene)
,其中AllergeniService
是具有相同元素的另一个服务,并且我将单个id与id元素匹配。如果匹配则返回单个元素。
get: function(idAllergene)
{
var deferred = $q.defer();
for (i = 0; i < allergeni.length; i++) {
//if(idAllergene == allergeni[i].id)
// ...
}
console.log("Id allergene che ha chiamato: "+idAllergene);
deferred.resolve(1);
return deferred.promise;
}
在这种情况下,返回总是延迟解析为1作为参数。 问题是这个调用仅使用第一个元素进行一次。
如何使用不同的参数调用n次函数并等待所有调用终止?
谢谢