1
http.get
メソッドを私のThemeService
から外して、できるだけ "同期"にして、呼び出しからTheme
を取得した後に連続してもらいたいです。私はこれを行う方法を探し、async
とawait
を見つけました。私はこれを実装しようとしましたが、うまく動作しませんでした。私はコードが何であるか、何が実行されていないかを見ることができるように、console.log()
をコードに入れました。 ThemeService
のコールの後/には、「ASYNCファンクション」および「ASYNC後」が実行されますが、それらは実行されません。typescriptでasync/awaitを使用する方法
私がasync/await
のtypescriptの新機能であるため、私が書いたことがひどく、あるいは私がやろうとしていることが可能かどうかはわかりません。
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 ")'を置いた場合、コンソールにそれを記録しません。 – Kupi
まず、themeService.getTheme()asyncメソッドをいくつかのダミーメソッドそれは、そのgetが呼び出されたときにログに記録し、Promise.resolve()のようなものを返します。これはthemeServiceの問題ではないことを確認します。 – Amid
'getTheme'の内容をコンソールで何かを記録し、ObservableではなくPromise.resolve()を返すように変更しました。しかし、私がasync/awaitの代わりに通常使うなら、getThemeメソッドは動作します。 –
Kupi