Ho la seguente chiamata q.all per risolvere due promesse. Ho controllato tutti i post ed ho provato tutti gli altri modi di attuazione q.all e il suo stesso casoq.tutto non funziona per più promesse
var xyzdeffered = $q.defer();
service1.getServiceDetail1($routeParams.id).then(function(promise) {
xyzdeffered.resolve(promise);
});
var abcdeffered = $q.defer();
service2.getServiceDetail2($routeParams.id).then(function(promise) {
abcdeffered.resolve(promise);
});
$q.all([ xyzdeffered, abcdeffered ]).then(function(data) {
$scope.variable = data;
});
mi aspetto la variabile in q.all dovrebbe ottenere popolata solo dopo le prime due promesse sono risolti. Ma sfortunatamente la chiamata al servizio stesso non viene restituita con i dati e il controllo passa al q.all. Trovo strano questo perché, come da documentazione, q.all è chiamato solo quando le tue promesse vengono restituite con 200 risposte e sono risolte. Ho controllato l'analisi delle chiamate di rete e ho anche messo un po 'di avviso per vedere la sequenza del codice e scoprire che l'allarme q.all è il primo avviso a essere spuntato e quindi le altre promesse sono state risolte. Mi fa davvero impazzire il motivo per cui una semplice implementazione di q.all non funziona .. Qualsiasi aiuto sarà apprezzato.
Btw si sentiva in anti-modello più comune: 'service1.getServiceDetail1 ($ routeParams.id)' è già * * una promessa, perchè è necessario utilizzare '$ q.defer' a tutti? Metti semplicemente queste promesse nel tuo '$ q.all' – floribon
Sì, corretto questi sono codificati da qualcun altro .. volevo usare il modello esistente ... ma voi ragazzi avete già confermato che l'implementazione è sbagliata –