-1

在尝试从函数调用中获取数组时,我遇到了一些困惑。我不确定为什么会返回未定义而不是预期值。

以下按预期记录了一个数组。

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);

}

以下日志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);
}
4

1 回答 1

0

在您的第二种情况下,return frauds;实际上是从回调返回getPastEvents()而不是findFraudByFromID(). findFraudByFromID()什么都不返回,因此是未定义的。

于 2019-02-28T19:02:11.583 回答