反应本机可能未处理的Promise拒绝

时间:2018-08-25 18:49:58

标签: javascript react-native

我正在尝试使用React Native的提取功能从API获取值。然后将从JSON检索的值标记为Millions,Billions ...等。

JSON文件

{
  "value": 92060,
  "new": 1
} 

要做我想做的事,我使用了下面的代码。

async componentDidMount() {

let data =  await fetch('https://demo614535421.mockable.io/getData')
.then((response) => response.json())
.then((responseJson) => {
  this.setState({
    grossRev : this.getCodedValues(responseJson.grossRevenue)
  })

})
.catch((error) => {
  console.error(error);
});
this.setState({ wowData: true });
return data;

}

还有getCodedValues()函数,

getCodedValues(value)
{
  console.log(Math.abs(Number(value)));
}

在我检查成千上万亿之前,iOS模拟器开始显示错误信息,

Undefined is not an Object (evaluating '_reactNative.Math.abs')

在捕获数据时,我使用了async并在这里等待以保存函数。但是在getCodedValues函数中,value中的参数似乎仍然是undefined吗?

问题

  1. 如何解决这个问题并进行算术计算?

1 个答案:

答案 0 :(得分:1)

这个怎么样?这仅使用async / await,并且不处理then / catch,因为当您使用await时,它将等待fetch随响应返回。

async componentDidMount() {
   try {
      let response =  await fetch('https://demo614535421.mockable.io/getData');
      let responseJson = response.json();
      this.setState({
         grossRev: this.getCodedValues(responseJson.grossRevenue)
      })
   }catch(err){
      console.log(err);
   }
}