Inifite loop lors d'un subscribe
Bonjour :)
Je vous explique, j'ai un une liste d'utilisateur que j'alimente et mets à jour lors de chaque connexion sur le serveur. Cette liste est partagé par tous les composants
Voici le service qui contient la liste :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| export class DataServiceService {
userDataSource: BehaviorSubject<User[]> = new BehaviorSubject([]);
userData = this.userDataSource.asObservable();
constructor() { }
addUser(user: User) {
const currentValue = this.userDataSource.value;
const updatedValue = [...currentValue, user];
this.userDataSource.next(updatedValue);
}
getArrayUser(): Observable<User[]> {
return this.userData;
}
updateArrayUser(users: User[]) {
this.userDataSource.next(Object.assign([], users));
}
} |
Mon problème c'est lorsqu'un utilisateur se déconnecte, je souhaite enlever cet utilisateur de la liste. Donc je procède comme ceci :
Code:
1 2 3 4 5
| this.dataService.getArrayUser().subscribe(result => {
let oldUSers = result;
let newUSers = oldUSers.splice(oldUSers.findIndex(item => item.id == user.id), 1);
this.dataService.updateArrayUser(newUSers);
}); |
Et là je tombe sur une infinite loop puisque je fais un update dans un subcribe.. Avez vous une idée pour supprimer correctement cet utilisateur depuis son id ?
Merci :)