Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

179
Vistas
Acción después de empujar elementos en la matriz

Implementé una función que uso para llamar a una API, recuperar información para cada producto y enviarla a la matriz. Después de haber hecho esto para todos los productos, haría una acción con la matriz.

Así que tengo:

 newProducts: any = [] loadOfferRelated(offer) { // consider this offer with 2 products array. let products = offer.products for (let i = 0; i < products.length; i++) { let apiCall = this.offerService.apiCall(products[i].id, product.catalogId) apiCall.pipe(untilDestroyed(this)).subscribe( (data) => { operationOnArray(data, products[i])} ) } if(this.newProducts.length > 0){ // ---> Here i should call another function but it doesn't enter there) } operationOnArray(data, product){ // I make some operation product and save in array this.newProducts.push(products) console.log("this.newProducts", this.newProducts) <-- this is every for populated + 1 return }

Tengo un problema para llamar al if cuando se completa la matriz newProducts, ¿cómo puedo hacerlo?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

De acuerdo, puede usar un forkJoin para hacer las llamadas a la API simultáneamente y usar el operador de map para devolver cada elemento transformado, insertar los datos devueltos en la matriz y finalmente llamar a la condición if.

 newProducts: any = []; loadOfferRelated(offer) { // consider this offer with 2 products array. let products = offer.products; const apiCalls = products .map((product: any) => this.offerService.apiCall(product.id, product.catalogId)) .pipe( map((data: any, i: number) => { // i am not sure what your doing with the api call (data) so I am merging product and data, you customize // to your requirement return { ...products[i], ...data }; }) ); forkJoin(apiCalls).subscribe((newProducts: Array<any>) => { this.newProducts = newProducts; if (this.newProducts.length > 0) { // ---> Here i should call another function but it doesn't enter there) } }); }
about 4 years ago · Santiago Trujillo Denunciar

0

Su problema es que todo lo que sucede en su suscripción es asíncrono. Eso significa que su si se activa antes de que finalice su solicitud, por lo que es muy probable que su condición si siempre termine con un falso.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda