私は一度だけ電話をかけたいと思います。呼び出しがすでに完了している場合は、ローカル変数を返す必要があります。角2サービス:ローカル変数を返すか約束をしてください
サービス:
public currentUser: User;
getUser() {
if (this.currentUser) {
return this.currentUser;
}
else {
return this.http.get('/api/user/')
.toPromise()
.then(response => {
this.currentUser = response.json() as User;
return this.currentUser;
});
}
}
ユーザがnullの場合、呼び出しが行われるが、呼び出しが非同期であるため、コンポーネントで取得しません。それをどうすれば実現できますか?それは最初の時間を働いている
getUserFromService() {
let serviceReturn = this.userService.getUser();
if (serviceReturn instanceof User) {
this.user = serviceReturn;
}
else {
let promise = serviceReturn as Promise<User>;
promise.then(
response => {
this.user = response;
}
);
}
}
が、二回目は、それがユーザとしてserviceReturnを認識し、エラーをスローelse
を、行っておりません。
'this.http.get'から約束を取り戻していますか? –
はい、質問の行を忘れました。編集しました:) – Robouste