Ich möchte eine http.get
Methode aus meinem ThemeService
aufrufen und es so "synchron" wie möglich machen, so dass es fortlaufend, nachdem es Theme
aus dem Anruf erhält. Ich suchte, wie man das macht und stolperte über async
und await
. Ich habe versucht, dies zu implementieren, aber es hat nicht ganz funktioniert. Ich habe console.log()
in den Code geschrieben, damit ich sehen kann, was ist und was nicht ausgeführt wird. Die "IN ASYNC FUNCTION" und "AFTER ASYNC" werden ausgeführt, aber nicht die nach/in meinem Anruf unter ThemeService
.So verwenden Sie async/erwarten in Typoskript
Da ich neu bin zu den async/await
Funktionen in Typoskript Ich weiß nicht, ob was ich geschrieben habe, ist schlecht oder wenn was ich versuche zu tun ist möglich oder nicht.
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");
}
Ich habe es in beide Richtungen versucht, aber nichts hat geklappt, 'this.theme' hat keinen Wert bekommen. Der "AFTER ASYNC" ist nicht in der Konsole angemeldet. Wenn ich eine 'console.log (" int method ")' innerhalb der Methode 'getTheme()' setze, protokolliert sie es nicht in der Konsole – Kupi
versuche zuerst deine themeService.getTheme() async Methode mit einer Dummy Methode zu ersetzen das protokolliert nur, wenn es aufgerufen wird, und gibt etwas wie Promise.resolve() zurück, um zu sehen, dass es nicht das Problem mit themeService ist. – Amid
Ich änderte den Inhalt von 'getTheme', um nur etwas in der Konsole zu protokollieren und Promise.resolve() anstelle von Observable zurückgeben und das funktioniert. Aber die getTheme-Methode funktioniert, wenn ich sie normalerweise anstelle von async/await verwende. –
Kupi