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

105
Vistas
JavaScript returning different array inside and outside of Observable

I have a function that should return an array of Object with 2 properties:

setusersExpiryDate() {

let userList = [];
let userList2 = [];

for (let i = 0; i < this.usersIdsList.length; i++) {
    this.userService.getUserDetails(this.usersIdsList[i]).subscribe(
        user => {
            if (user.type === 'INTERNAL') {
                userList[i] = {
                    user: this.usersIdsList[i],
                    expirationDate: this.getInternalExpiryDate()
                }
            }
            if (user.type === 'EXTERNAL') {
                userList[i] = {
                    user: this.usersIdsList[i],
                    expirationDate: this.getExternalExpiryDate()
                }
            }
        },
        error => console.log(error)
    );
    userList2[i] = {
        user: this.usersIdsList[i],
        expirationDate: this.getInternalExpiryDate()
    }
}
console.log(userList);
console.log(userList2);

return userList;
}

the first array userList will return something like this:

[]
 0: {user: 'USER222', expirationDate: Tue Oct 25 2022 12:32:45 GMT+0100 (Western European 
  Summer Time)}
 1: {user: 'USER321', expirationDate: Sun Oct 25 2026 12:32:45 GMT+0000 (Western European 
    Standard Time)}
 2: {user: 'USER011', expirationDate: Sun Oct 25 2026 12:32:45 GMT+0000 (Western European 
    Standard Time)}
 length: 3
 [[Prototype]]: Array(0)

and the 2nd array userList2 , which is outside of Observable is giving the right result:

(3) [{…}, {…}, {…}]
 0: {user: 'USER222', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 1: {user: 'USER321', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 2: {user: 'USER011', expirationDate: Mon Oct 25 2021 12:32:45 GMT+0100 (Western European 
     Summer Time)}
 length: 3
 [[Prototype]]: Array(0)

I want to know what I'm doing wrong with array userList , because I want it return same result as userList2.

userList => [] empty array : Wrong / userList2 => [{…}, {…}, {…}] array with 3 objects on it : right

about 4 years ago · Juan Pablo Isaza
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