Używam SQLStorage z platformy jonowej. Funkcja usuwania zwraca obietnicę. W moim kodzie muszę usunąć wiele wartości. Kiedy wszystko się skończy, muszę wykonać jakiś kod.Angular2 czekać na wiele obietnic, aby zakończyć
Jak mogę poczekać na wszystkie z nich, a następnie uruchomić funkcję zwrotną?
Kod:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
zagnieżdżanie wszystko jest złą praktyką więc szukam godnej rozwiązanie :)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
Chciałbym dodać, że jeśli któraś z tych obietnic odrzuci, "Promise.all" natychmiast odrzuci (czy reszta się skończyła), a 'then' zostanie pominięte. Jeśli musisz uruchomić 'doSomething()' czy im się to uda, albo im się nie uda, musisz 'catch' każdego z nich indywidualnie, aby zwrócić' Promise.resolve() '. –
Z 'Promise.all()', będą one wykonywane jeden po drugim, lub wszystkie na raz? – Robouste
Wszystkie wywołania są wykonywane natychmiast, a następnie 'Promise.all()' czeka, aż wszystkie te obietnice się zakończą, zanim się skończą.To nie jest funkcja "Promise.all". Z tym kodem 'Promise.all ([ this.storage.remove (key1),', ...]); '' this.storage.remove (key1) 'jest wywoływane i tylko zwracana wartość (' Promise') jest dodawany do tablicy, która jest przekazywana do 'Promise.all (...)' –