2017-03-21 4 views
-2

Ich habe einen Dienst wie unten ausgeführt,Wie kann ich den Dienst alle 1 Sekunde anrufen und die Antwort mit angular2 überprüfen?

export class UploadPollingService { 
    constructor(private http: Http, private appConfig: AppConfigService) { } 
    checkUploadInfo(term: string,): Observable<Event[]> { 
     return this.http 
      .get(this.appConfig.getAPIUrl() + `/checkStatus?processId=${term}`) 
      .map(this.extractData) 
      .catch(this.handleErrors); 
    } 

Ich bin mit diesem in einer Komponente, und ich will diesen Service alle 1 Sekunde rufen und den Status zu überprüfen, gehen Sie grundsätzlich eine Abfrage. wie macht man?

this.uploadPollingService.checkUploadInfo() 
+0

verwenden müssen Sie 'timeinterval' Methode von JavaScript verwenden, und rufen Sie jede Sekunde –

+0

wie dies funktionieren? setInterval (checkUploadInfo(), 500); –

+0

Ja, genau so ruft dies Ihre Methode jede Sekunde oder nach der von Ihnen angegebenen Zeit auf. –

Antwort

1

Sie Ihre Service-Methode innerhalb timeinterval wie dieses

ngOnInit(){ 
    this.interval = setInterval(() => { 
     this.checkUpdate(); 
    }, 1000); 
    } 

    ngOnDestroy() { 
    if (this.interval) { 
     clearInterval(this.interval); 
    } 
    } 

    checkUpdate(){ 
    this.uploadPollingService.checkUploadInfo() 
     .subscribe(res => { 
     console.log(res, "Response here"); 
     }, 
     err => { 
     console.log(err); 
     }) 
    } 
    .... 



    export class UploadPollingService { 
    constructor(private http: Http, private appConfig: AppConfigService) { } 
    checkUploadInfo(term?: string): Observable<Event[]> { 
     return this.http 
      .get(this.appConfig.getAPIUrl() + `/checkStatus?processId=${term}`) 
      .map(res => { 
       return [{ status: res.status, json: res.json() }] 
      }) 
      .catch(this.handleErrors); 
    } 
1

Statt this.uploadPollingService.checkUploadInfo() Verwendung unter Code:

interval: any; 
    ngOnInit(){ 
    this.interval = setInterval(() => { 
     this.uploadPollingService.checkUploadInfo() ; 
    }, 1000); 
    } 

    ngOnDestroy() { 
    if (this.interval) { 
     clearInterval(this.interval); 
    } 
    } 

Hoffe, dass es Hilfe ist !!!

+0

Wie bekomme ich die Antwort? –

+0

sollten Sie **. Then ** verwenden, um die Antwort zu lesen wie ** this.uploadPollingService.checkUploadInfo(). Dann (t => // Ihre Antwort) **; –

+0

bekomme Fehler dann existiert nicht –

Verwandte Themen