gpt4 book ai didi

async-await - 如何等待订阅功能以角度 8 完成?

转载 作者:行者123 更新时间:2023-12-04 11:50:29 24 4
gpt4 key购买 nike

我想等待一个函数完成,然后再执行它旁边的函数。
我有一个名为 的函数getData() 其中发生 http 调用并返回一个 observable。第二个功能 checkDuplicate() 我们已订阅该功能 getData() .我们有第三个函数叫做 继续()我们称之为 checkDuplicate() 函数和一次 checkDuplicate() 功能完成,我们正在拨打警报(“完成”) .但这里的问题甚至早于 checkDuplicate() 功能完成,已触发警报。
找到代码以获得更好的说明:

getData(): Observable<any>{
return this.http.get<any>(URL...);
}

checkDuplicate(){

return this.getData().subscribe(response => {
if(response){
console.log("Inside");
}
});
}

proceed(){
this.checkDuplicate();
console.log("finished");
}
实际结果
完成的
里面
预期结果
里面
完成的
我试过 异步/等待 等待 checkDuplicate() 函数完成。但是还是没有用。
如果您分享解决方案,将不胜感激。
提前致谢 !!!

最佳答案

异步编程的陷阱。这是一个带有 promise 的解决方案(您也可以使用 observables):

getData(): Observable<any>{
return this.http.get<any>(URL...);
}

async checkDuplicate(){
var response = await this.getData().toPromise();
if (response) {
console.log("Inside");
}
}

async proceed(){
await this.checkDuplicate();
console.log("finished");
}

关于async-await - 如何等待订阅功能以角度 8 完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63136965/

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