我想要调用
ThemeService
的http.get
方法,并尽可能使其“同步”,以便在获取Theme
后继续执行。我搜索了如何实现这一点,并偶然发现了async
和await
。我试图实现它,但并没有完全成功。我在代码中放置了一些console.log()
,以便查看哪些被执行,哪些未被执行。在异步函数内部的“IN ASYNC FUNCTION”和“AFTER ASYNC”被执行,但不是在我对ThemeService
进行调用时执行的。
由于我对typescript中的async/await
函数很陌生,因此我不知道我所写的代码是否有问题,或者我尝试的是否可行。
ngOnInit():void{
let id = +this.routeParams.get('themeId');
async function getTheme(){
console.log("IN ASYNC FUNCTION");
var val = await this.themeService.getTheme(id).subscribe((theme:Theme)=> {
this.theme = theme;
console.log("IN AWAIT FUNCTION")
});
console.log("AFTER AWAIT");
return val;
}
getTheme();
console.log("AFTER ASYNC");
}
this.theme
没有被赋值。控制台中没有记录“AFTER ASYNC”。如果我在getTheme()
方法中放置一个console.log("int method")
,它也不会在控制台中记录。 - KupigetTheme
的内容更改为仅在控制台中记录一些内容并返回 Promise.resolve(),而不是 Observable<Theme>,这样就可以正常工作了。但是,如果我正常使用它而不是在 async/await 中使用,那么 getTheme 方法也可以正常工作。 - Kupi