J'ai une fonction comme ci-dessous
function async populateInventories(custID){
this.inventories = await this.inventoryService.getCustomerInventories(custID)
//do some stuff with Inventories
// another await
}
Mon problème est que je dois annuler une demande d'attente en cours et envoyer une nouvelle demande d'attente comme nous le faisons avec l'abonnement.
Auparavant, ma fonction était comme ci-dessous où j'étais en mesure d'annuler l'abonnement précédent :
function async populateInventories(custID){
let invetroySubscription$;
if(invetroySubscription$!==undefined){
invetroySubscription$.unsubscribe();
}
invetroySubscription$=this.inventoryService.getCustomerInventories(custID).subscribe((data:any)=>{
this.inventories = data.response;
//do some stuff with Inventories
// another subscription here -- I was told this way of doing is wrong
})
}
Avec async/await, j'ai pu traiter n'importe quelle opération de manière séquentielle, ce qui est vraiment génial, et le code était très lisible, ce qui n'était pas possible avec les abonnements, mais async/await a ses propres inconvénients.
Je peux arrêter plusieurs appels à la fois pour peupler les inventaires pour éviter mon problème, mais je cherche si je peux obtenir d'autres solutions (soignées) à mon problème.
PS : J'ai lu qu'appeler un autre abonnement dans un appel d'abonnement ou des abonnements imbriqués n'est pas une bonne pratique.