J'ai un tableau d'objets avec les données suivantes :
[
{
"name":"Uber",
"points":20,
"nodeName":"C=GB,L=London,O=Uber",
"port":10007,
"nodeType":"merchant"
},
{
"name":"Starbucks",
"points":20,
"nodeName":"C=US,L=New York,O=Starbucks",
"port":10010,
"nodeType":"merchant"
},
{
"name":"KFC",
"points":20,
"nodeName":"C=US,L=New York,O=KFC",
"port":10013,
"nodeType":"merchant"
}
]
Je souhaite parcourir ce tableau en boucle et afficher progrès déterminés La barre est animée et l'on doit également voir les points augmenter dans l'image ci-dessous. points
et je veux les afficher l'un après l'autre, c'est-à-dire d'abord pour Uber, la barre de progression affichée se chargera jusqu'à 100% pour les points d'Uber, et ainsi de suite pour Starbucks, puis pour KFC.
J'ai essayé le code suivant, où res
est mon tableau ci-dessus :
res.forEach((v, i) => {
Observable.timer(100).subscribe((i) => {
let interval = Observable.interval(100).subscribe((i) => {
this.percentageCom = (this.points / this.PointsAdded) * 100;
if (this.percentageCom === 100) {
// this.isHidden = true;
interval.unsubscribe();
}
})
});
});
let timer = Observable.interval(100).subscribe(() => {
this.points++;
if (this.points === 60) {
timer.unsubscribe();
// this.router.navigate(['/main/dashboard']);
}
});
et HTML :
<div class="vendor">{{merchantName|| 'Uber'}}</div>
<mat-progress-bar mode="determinate" value="{{percentageCom }}"></mat-progress-bar>
Mais le code ci-dessus n'affiche pas ma barre de progression l'une après l'autre car ces choses sont asynchrones, une sortie bizarre est affichée, à savoir l'affichage simultané de la barre de progression. Y a-t-il un moyen d'afficher le chargeur ci-dessus l'un après l'autre pour chaque élément du tableau ?
MISE À JOUR
Mon cas d'utilisation est le suivant :
- Dans la réponse du service, j'obtiens un tableau d'objets comme indiqué ci-dessus.
- Considérons le premier élément de ce tableau d'objets. Il a 20 points ; donc, à mon avis, les points devraient augmenter de 0 à 20 (comme un compteur).
- Alors que l'incrémentation des points se produit jusqu'à 20, je veux afficher la barre de progression en pourcentage pour Uber dans ce cas, qui fonctionnera à 100%.
- Une fois que les deux points ci-dessus ont été réalisés pour un objet, c'est-à-dire uber, il doit en être de même pour l'élément suivant dans le tableau de l'objet.
Voici les étapes que je souhaite mettre en œuvre. Mais comme interval
y timer
sont asynchrones, je ne suis pas en mesure de les exécuter l'un après l'autre en bouclant un objet.
Je me suis trompé de code dans le timer et l'intervalle... je n'ai pas réussi à m'en sortir !