React native 如何在react native中结束另一个函数后执行该函数?

React native 如何在react native中结束另一个函数后执行该函数?,react-native,React Native,我有一个查询,我有一个响应服务器的函数,因此需要一段时间,当它尝试执行另一个函数时,会发生错误。由于该函数响应一个来自服务器的数组,并且当其他函数请求该数组时,即使它没有。我们必须解决这个问题。例如: responseServer(tarea) { return fetch(url) .then((response) => response.json()) .then((responseJson) => { this.setState

我有一个查询,我有一个响应服务器的函数,因此需要一段时间,当它尝试执行另一个函数时,会发生错误。由于该函数响应一个来自服务器的数组,并且当其他函数请求该数组时,即使它没有。我们必须解决这个问题。例如:

responseServer(tarea) {
     return fetch(url)
      .then((response) => response.json())
      .then((responseJson) => {
        this.setState({ refresh: false })
        global.refresh = false
        let data = [];
        let Milestone = [];

        Object.values(responseJson.summary).forEach(item => {
          data = data.concat(item);
        });

        const result = ["Milestone"]
          .reduce((total, category) => ({
            ...total,
            [category]: data.filter(line => line.includes(category)) 
          }), {})

        Object.values(result.Milestone).forEach(item => {
          Milestone = Milestone.concat(item)
        });

        this.setState({
          Milestone: Milestone
        })
      })
}
还有一个功能

sacarPorcentaje(item) {
 this.responseServer(item)
 let summaryCopy = this.state.Milestone.map(data => {return data.split(",")})
      console.log(summaryCopy)
      var Okeys = 0;
      var total = 0;
      for (var i = 0; i < summaryCopy.length; i++){
        for(var j = 0; j < summaryCopy[i].length; j++){
          if(summaryCopy[i][j] === "OK") {
            Okeys = Okeys + 1
          }
        }
        total = total + 1 
      }
      console.log(Okeys)
      console.log(total)
}
sacarPorcentaje(项目){
此.responseServer(项目)
让summaryCopy=this.state.Milestone.map(数据=>{return data.split(“,”)})
console.log(摘要副本)
var Okeys=0;
var合计=0;
对于(变量i=0;i
我认为在调用
sacarPorcentaje
函数中的
responseServer
函数时,您需要使用
then

sacarPorcentaje(item) {
 this.responseServer(item).then(() => {
 let summaryCopy = this.state.Milestone.map(data => {return data.split(",")})
      console.log(summaryCopy)
      var Okeys = 0;
      var total = 0;
      for (var i = 0; i < summaryCopy.length; i++){
        for(var j = 0; j < summaryCopy[i].length; j++){
          if(summaryCopy[i][j] === "OK") {
            Okeys = Okeys + 1
          }
        }
        total = total + 1 
      }
      console.log(Okeys)
      console.log(total)
   }
}
sacarPorcentaje(项目){
此.responseServer(项)。然后(()=>{
让summaryCopy=this.state.Milestone.map(数据=>{return data.split(“,”)})
console.log(摘要副本)
var Okeys=0;
var合计=0;
对于(变量i=0;i
您应该将
sacarPorcentaje()
更新为
async
函数。然后
wait
函数调用将解决您的问题

async sacarPorcentaje (item) {
 await this.responseServer(item)
 let summaryCopy = this.state.Milestone.map(data => {return data.split(",")})
      console.log(summaryCopy)
      var Okeys = 0;
      var total = 0;
      for (var i = 0; i < summaryCopy.length; i++){
        for(var j = 0; j < summaryCopy[i].length; j++){
          if(summaryCopy[i][j] === "OK") {
            Okeys = Okeys + 1
          }
        }
        total = total + 1 
      }
      console.log(Okeys)
      console.log(total)
}
异步sacarPorcentaje(项目){
等待此响应服务器(项目)
让summaryCopy=this.state.Milestone.map(数据=>{return data.split(“,”)})
console.log(摘要副本)
var Okeys=0;
var合计=0;
对于(变量i=0;i

这个问题还有一个解决方案。请在
JS

中搜索如何使用
Promise