-1

I am running into some confusion while trying to get an array from a function call. I am not sure why am getting undefined back instead of the expected value.

The following logs an array as expected.

findFraudByFromID = (fraudID) => {
  this.KYCinstance.getPastEvents('ReportedFraud',{
  filter: {fromID: fraudID},
  fromBlock: 0
  }, (error, events) => {
    var frauds = [];
    for (var i = 0; i < events.length; i++) {
      frauds.push(events[i].returnValues.fraudID); 
    }
    console.log(frauds);
  })
} 

trackFraud = (fraudID) => {

  findFraudByFromID.call(this, 1);

}

The following logs undefined

findFraudByFromID = (fraudID) => {
  this.KYCinstance.getPastEvents('ReportedFraud',{
  filter: {fromID: fraudID},
  fromBlock: 0
  }, (error, events) => {
    var frauds = [];
    for (var i = 0; i < events.length; i++) {
      frauds.push(events[i].returnValues.fraudID); 
    }
    return frauds;
  })
} 

trackFraud = (fraudID) => {
  frauds = findFraudByFromID.call(this, 1);
  console.log(frauds);
}
0TTT0
  • 1,288
  • 1
  • 13
  • 23

1 Answers1

0

In your second case, return frauds; actually returns from the callback of getPastEvents() as opposed to findFraudByFromID(). findFraudByFromID() returns nothing, hence the undefined.

Kon
  • 4,023
  • 4
  • 24
  • 38