开发者问题收集

React Native 可能未处理的 Promise 拒绝

2018-08-25
8732

我尝试使用 React Native 的 fetch 函数从 API 获取值。然后将从 JSON 中检索到的值标记为数百万、数十亿...等。

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 和 await 来在捕获数据时保存函数。但仍然似乎在 getCodedValues 函数中 value 参数是 undefined

问题

  1. 我该如何解决这个问题并进行算术计算?
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);
   }
}
Sujil Maharjan
2018-08-25