如何让processData函数在Angular中等待getData函数的结果



我的getData函数进行一个api调用,然后将每个返回的对象放入一个数组中。然后返回数组。我现在需要我的processData函数来等待getData函数的结果,然后进一步处理它。目前我在console.log(cleaningData)时没有得到任何结果。我用async/await做错了什么?我错过了什么?


getData() {
var dataBucket = [] 
this.https.get('https:******FAKEURL*******').subscribe((response: any) => {
console.log(response.data)
for(let i = 0 ; i < response.data.length ; i++) {
dataBucket.push(response.data[i])
}
});
console.log(dataBucket);
return dataBucket;     
}
async processData() { 
let cleaningData = await this.getData();
console.log(cleaningData);
//do something with cleaningData
}

在angular中,异步函数通常遵循另一个逻辑。您声明当异步函数返回订阅时应该发生什么。因此,当它从您的订阅代码块(而不是从您等待同步功能的其他地方(返回时应该发生什么

getData() {

this.https.get('https:******FAKEURL*******').subscribe((response: any) => {

var dataBucket = []   <-----this should be here declared

console.log(response.data)

for(let i = 0 ; i < response.data.length ; i++){

dataBucket.push(response.data[i])
}

this.processData(response)  <-------you call that here
});
}

processData(response: any){    <-----you don't need async and await

// <----- here you can do anything with the response from getData() 

console.log(cleaningData);

//do something with cleaningData
}

最新更新