2016-08-25 11 views
5

?Gözlenebilirler "retryWhen" Ben <code>retryWhen</code> bir gecikme ayarlayabilirsiniz nasıl gecikme

import 'rxjs/add/operator/retry'; 
import 'rxjs/add/operator/retrywhen'; 

...

constructor(http: Http) { 

    var headers = new Headers(); 
    headers.append('Content-Type', 'text/plain'); 
    http.post('https://mywebsite.azurewebsites.net/account/getip', "", { headers: headers }) 
    .retryWhen(errors => { 
       return errors.delay(1000); // errors is not a function 
       }) 
      (event) => { 
       // handle events 
       this.ip = event.json(); 
      }, 
      (error) => { 
       console.error(error); 
       toastr.error('No connection to server. Please reload the page!') 

      } 
      ); 
} 

ben hata alıyorum: errors is not a function.

+0

onay bu bağlantıyı http://www.unknownerror.org/opensource/ReactiveX/RxJava/q/stackoverflow/22066481/rxjava-can-i-use-retry-but-with-delay – rashfmnb

+0

mi bu senin tam kodun mu? Varsa, sözdizimi hataları (eşleşmeyen parantez, vb.) Var. Kodu da biçimlendirebilir misiniz? işte bir kez –

+0

buradan ben sadece bulundu çözüm kodum neden ben burada üzerinde paylaşmak değil – rashfmnb

cevap

6
import {Http, Headers, Response} from '@angular/http'; 

http.get('http://jsonplaceholder.typicode.com/posts/1/commentsss') 
    .retryWhen(e => e.scan<number>((errorCount, err) => { 
     if (errorCount >= 10) { 
      throw err; 
     } 
     return errorCount + 1; 
    }, 0).delay(1000)) 
    .subscribe(r => console.log(`Sub: ${r}`)) 

Bu, 1 saniyelik gecikme ile 10 kez tekrar dener.

plnkr