2017-07-13 37 views
0

の外を永続ない値は、私は角度のサービスでこのコードを持っている:アンギュラ4 - 購読

this.signInService.signIn(this.model).subscribe(user => {this.user = user,console.log(this.user.Username)}); 
console.log(this.user.Username); 

私は2つのconsole.log文を持っています。 subscribeファンクション内のファンクションが正しい値を出力します。ただし、2番目のconsole.logは未定義値を出力します。

+0

これは非同期です。応答が受信される前に2番目の 'console.log'が呼び出されます。 –

答えて

2

これはAsyncsubscribeのシステムによるものです。だから、コードは、subscribeメソッドがデータを返すのを止めません。 isがデータを持っているときに再実行します。実際のデータの前にコンソールにUndefinedが印刷されていることに気付くでしょう。

https://www.javascripttuts.com/introduction-to-angular-2-observables/

+0

私は参照してください。私は下の 'localStorage'にデータを格納しています。それは私が未定義のデータを潜在的に格納していることを意味しますか – ecain

+0

最初のポイントはyesです。 'subscribe'メソッドが値noを返すとき。これは通常、第2の遅れと同じです。 –

+0

それで簡単なことは、store文を購読権の中に置くことでしょうか? – ecain

関連する問題