2016-03-03 35 views
14

投稿リクエストでタイムアウトを3秒にすることはできますか?どうやって ?一瞬のためhttp投稿要求のAngular2タイムアウト

私のコードは

this.http.post('myUrl', 
    MyData, {headers: Myheaders}) 
     .map(res => res.json()) 
     .subscribe(
      data => this.ret = data, 
      error => console.debug('ERROR', error), 
      () => console.log('END') 
     ); 

答えて

28

あなたはこのようtimeout演算子を使用することができます。

this.http.post('myUrl', 
     MyData, {headers: Myheaders}) 
     .timeout(3000, new Error('timeout exceeded')) 
     .map(res => res.json()) 
     .subscribe(
      data => this.ret = data, 
      error => console.debug('ERROR', error), 
      () => console.log('END') 
     ); 
+0

返信のおかげで、それは私のために動作しません、それがああごめん – Raph

+0

「( 『遅延を超え』)新しいエラーを返す」を実行し、常にあります!私の答えにはタイプミスがありました。私はそれを更新しました。新しい試みをすることができたら... –

+0

@ThierryTemplierは 'new Error'を返す代わりに' throw new Error'を投げて、実際の 'red color'でコンソールのエラーを見ることができます –

13

あなたがそう

import 'rxjs/add/operator/timeout'

Iのようにタイムアウトをインポートする必要がありますrxjsでそれなしで動作させることができませんでした5.0.1と角2.3.1

9

最新のリリースで動作するようにThierryの回答を修正しました。タイムアウト関数の2番目のパラメータを削除する必要があります。 angle-cliの問題に関する議論によれば、timeout関数は常にTimeoutErrorをスローします。

this.http.post('myUrl', 
    MyData, {headers: Myheaders}) 
    .timeout(3000) 
    .map(res => res.json()) 
    .subscribe(
     data => this.ret = data, 
     error => console.debug('ERROR', error), 
     () => console.log('END') 
    ); 
+1

角度4の第2引数としてエラーを渡すことができないことを確認しました – Keegan

関連する問題