2016-03-03 15 views
14

Bir posta isteğinde 3 saniyelik bir zaman aşımı yapmak mümkün mü? Nasıl ? an içinAngular2 zaman aşımı http iletme isteğinde

Kodum

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

cevap

28

Böyle timeout operatörünü kullanabilirsiniz:

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

şekilde cevap verirken için teşekkürler, ama benim için çalışmıyor, her zaman üzgün Ah – Raph

+0

"('gecikme aşıldı') yeni Hata return" yürütme var! Cevabımda bir yazım hatası vardı. Onu güncelledim. Yeni bir denemeyi yapabilirseniz ... "Yeni Hata" yerine –

+0

@ThierryTemplier hata yapmalı ve yeni bir hata atmalıyız. Böylece bu hatayı gerçek kırmızı renkte görebilmeniz için hata yapmalısınız –

13

Çok

import 'rxjs/add/operator/timeout'

benim gibi zaman aşımı ithal etmek gerekebilir rxjsüzerinde işe yaramazdıve köşeli 2.3.1

9

En son sürümle çalışmak için Thierry'nin yanıtını değiştirdim. Zaman aşımı işlevinin ikinci parametresini kaldırmak gerekir. Açısal-uç ile ilgili bir tartışmaya göre, zaman aşımı işlevi her zaman şimdi bir Zaman Aşımı Değeri atar.

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

Angular 4'te bir hata ikinci argüman olarak iletilemeyeceğini doğruladı. – Keegan

İlgili konular