2016-06-29 19 views
3

Ich bin neu in Typoskript und ich kann keine Alternative finden, um eine Codezeile zu optimieren, wie Sie unten sehen können. Ich brauche ein Array aus einem Callback-Funktion abgeleitet zu filtern, die ich zu einem promise.then() übergeben ...Typoskript Syntax angular2 Versprechen dann Rückruf

getAllItems(): Promise<MyItem[]> { 
    return this.http.get(this.itemsUrl).toPromise() 
     .then(this.extractData) 
     .catch(this.handleError); 
} 

getItem(id: number | string): Promise<MyItem> { 
    var that = this; // i want to avoid to use this... 
    return this.http.get(this.itemsUrl).toPromise() 
     // ...just here 
     .then(function(res) {    
      return that.extractData(res).filter(h => h.id === +id)[0]; 
     }) 
     .catch(this.handleError); 
} 

private extractData(res: Response) { 
    let body = res.json(); 
    return body.data || { }; 
} 

-Code oben funktioniert gut, aber ich möchte eine kurze verwenden (mehr Typoskript i guess) Syntax etwas zu erreichen wie:

getItem(id: number | string): Promise<MyItem> { 
    return this.http.get(this.itemsUrl).toPromise() 
     // ... here again 
     .then(this.extractData => result.filter(h => h.id === +id)[0]) 
     .catch(this.handleError); 
} 

offensichtlich funktioniert es nicht ... irgendeinen Vorschlag bitte? Vielen Dank.

Antwort

1

Sie haben noch die Antwort auf Ihre extractData Methode zu übergeben:

getItem(id: number | string): Promise<MyItem> { 
    return this.http.get(this.itemsUrl).toPromise() 
     // ... here again 
     .then(res => this.extractData(res).filter(h => h.id === +id)[0]) 
     .catch(this.handleError); 
} 
+0

dank Mann, sehr hilfreich. – user3683782

Verwandte Themen