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