gpt4 book ai didi

javascript - 控制程序的流程

转载 作者:搜寻专家 更新时间:2023-10-30 21:21:31 24 4
gpt4 key购买 nike

我有 start() 并且只想在 getCityInformation() 完全完成后继续我的代码。控制台应打印(“getCityInformation”=>“完成”=>“完成”)。我如何控制此流程?

async start() {
await this.getCityInformation().then(() => console.log('done'));
console.log('finished');
}

async getCityInformation() {
this.apiService.getProductsByCategory(this.city.CategoryID)
.subscribe((data: Product[]) => {
console.log('getCityInformation')
this.products = data;
},
(err) => console.log(err),
() => this.loadActivities()
);
}

最佳答案

donefinishedgetCityInformation 的当前顺序是有意义的,因为在异步 getCityInformation() 中你实际上立即返回(例如不要 await 等)。所以链条是这样的:

  1. start() 调用 getCityInformation()
  2. getCityInformation() 订阅一个 observable 并返回
  3. getCityInformation() 现已完成,start() 打印 done
  4. start() 打印finished
  5. getCityInformation() 中的回调获取更新并打印 getCityInformation

要解决此问题,您需要在 getCityInformation() 中等待,直到您准备好使用可观察对象。例如,您可以返回一个 Promise,它会在您拥有所需的所有数据时实现。

关于javascript - 控制程序的流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53517917/

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