私はAngular 4ログインアプリケーションを持っています。私はlogin.cmponent.tsファイルにアクセスロジックを書いてlogin.service.tsファイルにアクセスし、login.service.tsファイルにアクセスして認証サービスを再度呼び出します。コンポーネントメソッドでAngular 4で同期呼び出しを行う方法
ログインコンポーネントからauthenticateメソッドを呼び出すと、falseが返されます。残りのコードを実行するまでには、非同期の方法でAngularランコードを知っているので、認証サービスはtrueを返します。
これは私のコードです:
ログインコンポーネント方法:
this.loginService.setLoginData(
new LoginModel(this.userId, this.bankId, this.password)
).checkIfLoginSuccessfull();
Login.service方法:
this.authService
.attemptAuth(credentials);
認証サービス方法:
attemptAuth(credentials): void {
this.restService
.post('/authenticate', credentials)
.subscribe(
data => this.setAuth(data.token),
err => this.destroy());
}
コードが動作していますフィンe。しかし、私はcheckIfLoginSuccessfull()の実行が終了すると結果を得たいです。私は方法を呼んでいないことを知っている(Observablesが正しく)。
助けてください。 :)
あなたは非同期から逃れることはできません。非同期呼出しを同期化することは、不可能(望ましいことではない)である。 –
コールを同期させようとするのではなく、約束やオブザーバブルをどのようにつなぐかを学びます。多くのチュートリアルがあります。これは最も頻繁な質問の1つです。質問には具体的な提案をするのに十分なコードが含まれていません。 –
ちょうど3レベルのメソッド呼び出しです。最後のauthServiceがコードを正しく実行しています。一度行が実行されると、最初のLoginComponentメソッドで目的の結果にアクセスできるように、それらをどのようにチェーン化できますか。 – user3095179