2017-09-27 4 views
0

Ich möchte eine Map-Operation in der Versprechen von Axios zurückgegeben werden.Karte Ergebnisse in axios.js Versprechen

Es wäre so etwas wie:

this.$http.get('/movements', this.$auth.httpConfig()) 
    .map(row => { 
    return { 
     'origin' : row.origin ? row.origin.name : '', 
     'destination' : row.destination ? row.destination.name: '', 
     'type_code' : row.type.code, 
     'type' : row.type.type, 
     'amount' : row.amount, 
     'description' : row.description, 
     'movement_date' : row.movement_date, 
     'id': row.id 
    } 
    }). 
    then((response) => { 
    this.table = response.data; 
    }) 

Natürlich ist dies nicht funktioniert, da Kartenfunktion nicht in Versprechen enthalten ist, würde es einige zusätzliche lib wie Drossel benötigen, aber ich hatte keinen Erfolg, während es die Integration von mit Axios.

Gibt es einen "axiösen" Weg, dies zu tun? Oder was wäre der einfachste Weg?

+1

Nur 'replace .map' von' .then (arr => Promise.all (arr.map'? (Oder in Ihrem Fall Sie die 'Promise.all' nicht einmal brauchen, genau wie du brauchst nicht zwei angekettete 'then' Aufrufe) – Bergi

+1

Verschiebe deine map einfach an die .then()? this.table = response.data.map (... – lxe

+0

Danke euch beiden, es war einfacher als ich dachte! – jigarzon

Antwort

0

Die Lösung ist einfacher als die Verwendung einer anderen Bibliothek. Danke @Bergi und @Ixe.

this.$http.get('/movements', this.$auth.httpConfig()). 
    then(response => { 
    this.table = response.data.map((row) => { 
     return { 
     'origin': row.origin ? row.origin.name : '', 
     'destination': row.destination ? row.destination.name : '', 
     'type_code': row.type.code, 
     'type': row.type.type, 
     'amount': row.amount, 
     'description': row.description, 
     'movement_date': row.movement_date, 
     'id': row.id 
     } 
    }); 
    }); 
Verwandte Themen