2017-07-17 5 views
0

tmpに受信データを書き込む方法を教えてください。 returnを通して、promiseオブジェクトが関数から返され、そして機能tmpでまた"get"で得られた角出力情報はどのようにして得られますか?

tmp: string; 

constructor(private http: Http) { 
    this.tmp = "load"; 
    this.GetUsers(); 
} 

ngOnInit() { 
    setTimeout(console.log("Hello"), 2000); 
} 
GetUsers() { 
    this.http.get('http://localhost:1337/api/users') 
    .toPromise() 
    .then(function(response) { 
     this.tmp = "success" 
    }) 
    .catch(this.handleError); 

setTimeoutが機能しない表示されていません。つまり、それは一度しか動作しません。

constructor(private http: Http) { 
    this.tmp = "load"; 
    this.GetUsers(); 
} 

ngOnInit() { 
} 
GetUsers() { 
    setTimeout(console.log("Hello"), 2000); 
} 
+0

'レコード' – Flaugzig

+0

@Flaugzig write – Nikolay

+0

setTimeoutはデザインによって1回実行されます。 [this](https://www.w3schools.com/jsref/met_win_settimeout.asp)ページも参照してください。 –

答えて

1

はこれを試してください: - @angular/http

this.http.get('http://localhost:1337/api/users') 
     .toPromise() 
     .then((response:Response)=> { this.tmp = response.json() }) 
     .catch(this.handleError); 

あなたはsetTimeout()は、コンストラクタの後に一度だけ実行されます書かれているngOnInit()ライフサイクルフックからの応答を

追加インポート。記述されたコードがコンポーネント内にある場合、コンポーネントオブジェクトが作成されるたびに実行されますが、サービス中であれば、サービスオブジェクトがシングルトンオブジェクトであるためサービスを提供するときに一度実行されます

+0

'this.http.get'に感謝します。 setTimeoutは別の関数でも動作しません。 – Nikolay

+0

あなたはどこにあなたがsetTimeout()を追加しているか教えてください。 –

+0

これは 'setTimeout()'について何もしていません。それはあなたがそれを使っているところです。あなたが 'setTimeout()'を使いたいなら、私はあなたを助けることができるでしょう。 –

関連する問題