Necesito retrasar la llamada de función durante unos segundos. Tengo una solución que funciona pero lo suficientemente buena.
public recieveNewContact() { this.allData(); setTimeout(() => { this.lastAddedItem() }, 100) } public ngOnInit() { this.allData() } allData() { this.accountsService.getContactPerson().subscribe( (data) => { console.log(data) } ) }Este es un buen trabajo, pero no me gusta esto... ¿Necesito una mejor solución tal vez con rxjs? Demora ?
lo cual es muy importante
En este caso, no necesito esto:
allData() { this.accountsService.getContactPerson().subscribe( (data) => { console.log(data) this.lastAddedItem() } ) }Porque no quiero cargar lastAddedItem() en init... Solo cuando se activa la recepción de NewContact.
Voy a tratar de explicar una vez más:
public recieveNewContact() { this.allData(); this.lastAddedItem()// here to be called when is allData finished without setTimeout }Sugeriría usar delay (si está 100% seguro del tiempo de finalización) o finalize (si quiere estar seguro de que esperará sin importar cuánto tiempo tome) (rxjs).
¿Es necesario llamar a la función allData cada vez, ya que puede mantener una copia local de los datos en la variable y luego hacer el ajuste? ¿O es una llamada a la API lastAddedItem?
También sugeriría configurar allData como privado ya que no quiero que se llame desde teplate u otro componente.