gpt4 book ai didi

javascript - 所有函数语句完成后的 typescript 调用语句

转载 作者:行者123 更新时间:2023-12-02 23:04:09 25 4
gpt4 key购买 nike

我有一个很长的函数,可以从多个级别的数据库中获取数据。

  getResult() {
this.appService
.getCountries()
.subscribe(
(countries: Country[]) => {
this.countries = countries;
},
() => {},
() => {
for (let country of this.countries) {
let cities: City[] = [];
this.appService
.getCities(country.id.toString())
.subscribe(
(theCities: Cities[]) => {
cities = theCities;
},
() => {},
() => {
for (let city of cities) {
if (city.population>1000) {
console.log(city);
}
}
}
);
}
}
);
this.result = true;
}

一旦一切完成,我想要声明

this.result = true;

被调用。但是,它是在上述代码完成之前调用的。

即使将其放在 onCompleted 函数的末尾,

this.result = true;

在循环完成之前被调用。

最佳答案

我认为您会发现在每次调用后使用 .toPromise() 并切换到异步/等待模式会更简单,您可以在其中使用 for 循环和您习惯的其他命令式构造。

  async getResult() {
this.countries = await this.appService.getCountries().toPromise();
for (let country of this.countries) {
const cities: City[] = await this.appService
.getCities(country.id.toString())
.toPromise();
for (let city of cities) {
if (city.population>1000) {
console.log(city);
}
}
this.result = true;
}

关于javascript - 所有函数语句完成后的 typescript 调用语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57660780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com