Mam więc metodę na serwerze angularjs, który wywołuje metodę, która zwraca obietnicę dla każdej metody w tablicy. Używam podkreślenia _each do przechodzenia przez tablicę. Chcę poczekać, aż cała tablica jest przetwarzana zanim zadzwonię końcową linię kodu w metodzie ..
Więc ...
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);
}
To oczywiście nie działa .. pętla kończy i wywołuje 'ShowAllMyCoolStuff', zanim zrobi się makeStuffCooler dla każdego elementu. Więc .. jaki jest właściwy sposób interakcji z metodą asynchroniczną, więc moja metoda ShowAllMyCoolStuff będzie czekać, aż kolekcja zostanie wypełniona? Może to być mój brak doświadczenia z $ q i obietnice w ogóle, ale utknąłem. Z góry dziękuję.
Warto zauważyć, że jeśli Twoja przeglądarka działa kanciasty, prawdopodobnie można na nim polegać i mieć Array.prototype.forEach Array.prototype.map.But tak, $ q.all gdzie to jest w. – pfooti