Quindi ho un metodo in un server angularjs che chiama un metodo che restituisce una promessa per ogni metodo in una matrice. Sto usando underscore _each per scorrere l'array. Voglio aspettare fino a quando l'intero array viene elaborato prima che io chiamo la riga finale del codice nel metodo ..
Quindi ...
function ProcessCoolStuff(coolStuffs)
{
var stuff = [];
_.each(coolStuffs, function(coolStuff)
{
//Some method using $q to return
makeStuffCooler(coolStuff).then(function(coolerStuff)
{
stuff.push(coolerStuff);
});
});
//Maybe Call a Display Method, or call event ect..
ShowAllMyCoolStuff(stuff);
}
Questo, naturalmente, non funziona .. il ciclo si completa e chiama "ShowAllMyCoolStuff" prima che makeStuffCooler venga eseguito per ciascun elemento. Quindi ... qual è il modo corretto di interagire con il metodo asincrono in modo che il mio metodo ShowAllMyCoolStuff attenda fino a quando la raccolta non viene popolata? Questa potrebbe essere la mia mancanza di esperienza con $ q e promesse in generale, ma sono bloccato. Grazie in anticipo.
pena notare che se il browser è in esecuzione angolare, probabilmente si può contare su di esso per avere Array.prototype.forEach e Array.prototype.map.But sì, $ q.all è dove sta a. – pfooti