Daniel Corona
Daniel Corona

Reputation: 1222

Array empty even after a loop

I'm trying to fill an array with some registers from a database. However, even after retrieving said registers and place them into the array, after the loop the array stays empty

const userParties = [];

userFollowing.forEach(element => {
  // Here's when I gather the information that I need
  dispatchGetUserEvents(element.user, response => {
    userParties.push(response);
    console.log(userParties); // Here the array is full of elements, like it's supposed to be
  });
});

console.log(userParties); // However, here 'userParties' return '[]'
this.setState({ followUsersEvents: userParties });
this.setState({ userImage: userImg });

I tried to update the state array on the loop, but I had no luck there either. 'userParties' is not a state array btw.

Upvotes: 1

Views: 378

Answers (1)

dark_gf
dark_gf

Reputation: 726

const userParties = [];

userFollowing.forEach(element => {
  // Here's when I gather the information that I need
  dispatchGetUserEvents(element.user, response => {
    userParties.push(response);
    console.log('dispatchGetUserEvents', userParties); // Here the array is full of elements, like it's supposed to be
  });
});

console.log('outside', userParties); // However, here 'userParties' return '[]'
this.setState({ followUsersEvents: userParties });
this.setState({ userImage: userImg });

run this code and you will see that outside will be printed first and dispatchGetUserEvents later, as I mentioned in comments dispatchGetUserEvents is async function, so first will be executed console.log('outside', ...);

Upvotes: 1

Related Questions