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