在一个函数中,我循环进行提取调用。
当所有调用结束后,我需要将值保存在变量中,但是对于异步调用而言,这是不可能的。
getReportsGroup(bukrs){
//TOTAL DE UN GRUPO DE PROYECTO
fetch('api/Reports/GetDataIRPA?SETCLASS=' + this.state.SETCLASS ', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
})
.then(response => response.json())
.then(data => {
this.setState({
reportIRPA: data
});
});
}
getTotalProjects(){
//Recorrer proyectos seleccionados
for (var i = 0; i < this.state.selectProjects.length; i++) {
this.getReportsGroup(this.state.selectProjects[i].bukrs);
}
console.log('finish all fetch');
}
getTotalProjects
函数正在执行一个循环,在该循环中调用getReportsGroup
(在此处进行提取)。在所有提取的末尾,我需要在getTotalProjects
中显示一条消息。当前,它是异步的,它在完成所有提取之前执行console.log('finish all fetch')
。 最佳答案
您需要等待,直到诺言解决。第一种方法返回promise,然后第二种应用.then
getReportsGroup(bukrs){
//TOTAL DE UN GRUPO DE PROYECTO
return fetch('api/Reports/GetDataIRPA?SETCLASS=' + this.state.SETCLASS ', {
method: 'GET',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
}
})
.then(response => response.json())
.then(data => {
this.setState({
reportIRPA: data,
});
});
}
getTotalProjects(){
//Recorrer proyectos seleccionados
var promises = []; //array of promises
for (var i = 0; i < selectProjects.length; i++) {
var promise = this.getReportsGroup(selectProjects[i].bukrs); //single promise
promises.push(promise);
}
Promise.all(promises ).then(function() {
console.log("DISPLAY your Message here"); // display here
});
console.log('finish all fetch');
}