Tengo una función que debería devolver una matriz de Objeto con 2 propiedades:
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; }la primera lista de usuarios de la matriz devolverá algo como esto:
[] 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)y la segunda matriz userList2 , que está fuera de Observable, está dando el resultado correcto:
(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)Quiero saber qué estoy haciendo mal con la matriz userList, porque quiero que devuelva el mismo resultado que userList2.
userList => [] matriz vacía: Incorrecto / userList2 => [{…}, {…}, {…}] matriz con 3 objetos: correcto