javascriptの変数スコープに問題があります。私は、.subscribe(...)
ブロックの外に出るとき becames undefined
の値を除いて、うまく動作する次のコードを持っています。私はなぜそれがクラスvaribaleなのか理解していません。ここに私のコードは次のとおりです。Javascroptの可変スコープ
private myUser: User;
login(username: string, password: string): User {
this.http.get(this.loginUrl + '?username=' + username + '&password=' + password)
.map((response : Response) => response.json())
.subscribe(data => {
console.log('data inside', data);
this.myUser = data;
console.log('user inside', this.myUser);
}
);
console.log('user outside', this.myUser);
return this.myUser;
}
私はbootstrap 4
でangular 4
を使用しています(私はそれが問題に影響を持っているとは思いません)。 ありがとうございます。
編集 私は下のリンクを赤、私は非同期呼び出しを管理するために、自分のコードにpromise
を追加しようとしました。オンラインチュートリアルは(単純すぎる確かに、Angular
公式リファレンスを含む)すべての非常に簡単なようで、私はこのようなものになってしまった:
this.http.get(this.loginUrl + '?username=' + username + '&password=' + password)
.toPromise()
.then(data => {
console.log('data inside', data);
this.myUser = data.json() as User;
console.log('user inside', this.myUser);
})
.catch(console.log.bind('Error!'));
しかし、それはアプリケーションフローには影響しません。私は努力を続けますが、どんな助けもありがとうございます。
私はあなたのソリューションを試しましたが、 'this.http.get(...)'関数は最後のステートメントだけを記録するので完全にジャンプしているようです。 – esseara