Estoy tratando de hacer una llamada a la API
ngOnInit(){ this.function1() } function1(){ this.userService.getUser() .then((data) => { this.user = data.user this.userM = data.userM // here problem: If I make a console.log(this.userM) it result at the beginning empty if(this.userM.length > 0 ) { console.log("goInside")} else { console.log("doesn't enter") //it enters always there } } }en mi servicio:
async getUser(): Promise<any>{ let user: any = [] let userM: any = [] //.... operation to populate return {user, userM} }Cuando hago una llamada a la API, usaría la matriz this.userM para realizar algunas operaciones. Pero siempre queda vacío al principio, pero ya no entra en si. ¿Como lo puedo hacer?
Utilice rxjs , intente usar un Observable en su lugar:
import { of } from 'rxjs'; getUsers(): Observable<any> { let user: any = [] let userM: any = [] //.... operation to populate return of({user, userM}); }Y luego, dentro de su componente:
ngOnInit(){ this.function1() } function1(){ this.userService.getUser().subscribe((response) => { const { user, userM } = response; if (userM.length) console.log('There is data in it!') else console.log('No data found...'); }); } Sugiero no usar Promises en un proyecto Angular a menos que sea necesario, tiene a su disposición rxjs junto con toneladas de operadores útiles para manejar llamadas asíncronas/flujos de datos