Sto utilizzando SQLStorage dalla piattaforma Ionic. La funzione di rimozione restituisce una promessa. Nel mio codice ho bisogno di rimuovere più valori. Quando questi sono tutti finiti ho bisogno di eseguire del codice.Angular2 attendi che siano chiuse più promesse
Come posso attendere tutti questi e quindi eseguire una funzione di richiamata?
Codice:
removeAll() {
this.storage.remove(key1);
this.storage.remove(key2);
this.storage.remove(key3);
}
Nesting tutto è una cattiva pratica, quindi sono alla ricerca di una soluzione decente :)
removeAll() {
return this.storage.remove(key1).then(() => {
this.storage.remove(key2).then(() => {
this.storage.remove(key3);
});
});
};
Aggiungo che se una qualsiasi di queste promesse viene respinta, 'Promise.all' rifiuterà immediatamente (se il resto è terminato) e il' then' verrà saltato. Se hai bisogno di eseguire 'doSomething()' se riescono o falliscono, devi "catturare" ognuno di allora individualmente per restituire un 'Promise.resolve()'. –
Con 'Promise.all()', verranno scomunicati uno dopo l'altro o tutti insieme? – Robouste
Tutte le chiamate vengono eseguite immediatamente, quindi 'Promise.all()' aspetta che tutte queste promesse vengano completate prima che si completi.Questa non è una funzione di 'Promise.all'. Con questo codice 'Promise.all ([ this.storage.remove (key1),', ...]); '' this thisstage.remove (key1) 'viene chiamato e solo il valore restituito (a' Promise') viene aggiunto all'array passato a 'Promise.all (...)' –