Este es mi código .ts:

array:any = [];

OnClickFunction(){
    
    this.httpClient.get<any[]>("http://url/?lbs="+this.my variable,{responseType: 'json'})
          .subscribe(data => {
            this.array = data;
            console.log(this.array)// This array contain many data
          });

    console.log(this.array)// this call of this array contain nothing, why ???
-1
Patrice Blanchard 23 jun. 2020 a las 23:43

2 respuestas

Esto es lo que dijo Tsvetan Ganev en forma de imagen:

enter image description here

Los números demuestran el orden de operación.

# 1 El código emite una solicitud de obtención de http, que es asíncrona.

# 2 La línea después de la suscripción se ejecuta y la consola registra que la variable local no está definida actualmente.

# 3 En algún momento posterior, cuando la llamada asincrónica devuelve la respuesta, se ejecuta el código dentro de la suscripción (la devolución de llamada) y los datos de respuesta se asignan a la variable local.

Espero que esto ayude.

0
DeborahK 23 jun. 2020 a las 21:06

Este es un lugar perfecto para demostrar la tubería asíncrona y cómo puede administrar suscripciones a observables por usted.

array$: Observable<any[]>;

OnClickFunction(){
  this.array$ = this.httpClient.get<any[]>("http://url/?lbs="+this.my variable,{responseType: 'json'});
}

Y en tu plantilla usas

<ng-containter *ngIf="array$ | async as array">
    {{ array | json }} Inside here you have your array available
</ng-container>
0
Adrian Brand 23 jun. 2020 a las 21:32