在我的场景中,我有一个代码:
save : function ( distinta ) {
var configDistinta = {
params : {
data: $filter('date')(distinta.data , "dd/MM/yyyy") ,
tipologia: distinta.tipologia,
idProdotto: distinta.elencoIngredienti[0].prodotto.id,
lottoProdotto: distinta.lottoProdotto,
quantitaProdotto : distinta.quantitaProdotto,
corpiEstranei : distinta.corpiEstranei,
tipoConformita : distinta.tipoConformita,
siglaControllo: distinta.siglaControllo,
azioneCorrettiva: distinta.azioneCorrettiva,
firmaOperatore: distinta.firmaOperatore,
firmaResponsabile: distinta.firmaResponsabile,
note : distinta.note,
visualizzaDettaglio:distinta.visualizzaDettaglio
}
};
var promises = [];
var distinta_id = null;
// chiamata post per inserimento distinta
return $http.post(urlDistinte, "", configDistinta).then (function(response) {
distinta_id = response.data.id;
console.log (response);
console.log ("INIZIO INSERIMENTO INGREDIENTI");
//INSERIMENTO INGREDIENTI NELLA DISTINTA,
for (var k in distinta.elencoIngredienti) {
if (!distinta.elencoIngredienti[k].cancel == true) {
var configDistintaIngrediente = {params: {
distintaBaseGelato_id : 2,
ingrediente_id : 1,
quantitaIngrediente : 45.56,
lottoIngrediente : distinta.elencoIngredienti[k].lottoIngrediente }
};
var p = $http.post(urlDistinteIngredienti, "", configDistintaIngrediente)
.success(function(data) {
alert ("OK");
}).error(function(data, status, headers, config) {
alert (
"data: " + data + "\n" +
"status: " + status + "\n" +
"headers: " + headers + "\n" +
"config: " + config + "\n"
);
console.log (config);
});
//promises.push (p);
}
}
console.log( promises );
console.log ("FINE INSERIMENTO INGREDIENTI");
$q.all( promises ).then( function(data) {
console.log ("AVVIO OPERAZIONI GESTIONE DISTINTA")
for (var k in data ) {
console.log(data[k]);
};
console.log ("FINE OPERAZIONI GESTIONE DISTINTA")
return data;
});
});
}
我看到了我的要求" post"在到达$q.all
之前执行。
如何将它们插入到数组中,然后仅运行$q.all
?
答案 0 :(得分:1)
您的promises
数组为空,这就是在您提出其他请求之前执行$q.all
的原因。
为了工作,您需要在promises
数组中填写您的请求,如下所示:
promises.push($http.post(urlDistinte, "", configDistinta).then (function(response) {...}));
promises.push($http.post(urlDistinteIngredienti, "", configDistintaIngrediente)...);
然后$q.all
将在所有请求返回成功后执行。