我的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
}