0

Mein Code funktioniert. Aber ich bin mir ziemlich sicher, dass es einen einfacheren Weg dafür gibt. So wie es jetzt ist, kann ich das Ergebnis erhalten, indem ich auf die '_v'-Taste in meinem Versprechen zugreife. Deshalb denke ich, dass ich etwas falsch mache. Hier ist der Code:Die richtigen Daten bekommen, aber nicht wo ich es erwarte

file1.js

import * as Utils from '../js/utils'; 

albumsArray() { 
    this.albums = Utils.getAlbums(this.user, this.token); 
} 

utils.js

export async function getAlbums(user, token){ 
    let store = [] 
    let data = await axios.get(`https://api.imgur.com/3/account/${user}/albums/`, { 
    headers: { 
     Authorization: `Bearer ${token}`, 
     Accept: 'application/json' 
    } 
    }) 
    .then(response => { 
    response.data.data.map(data => store.push(data)) 
    }) 

    return store || []; 
} 

So, wie es jetzt ist, ich das Ergebnis bekommen möchte ich in den Alben [ '_ v' ].

Obs: Alben (this.Albums) ist ein Versprechen, wenn ich es loggen, und _v ist der Schlüssel, wo ist die Daten, die ich brauche. Was ich falsch mache. Wie kann ich meinen Code besser aussehen lassen?

Dank

+0

Auf der obersten Ebene müssen Sie immer ein Versprechen halten. –

Antwort

1

Die kühle Sache über async/erwarten ist, dass Sie den Ist-Wert anstelle des Versprechens bekommen ... Sie es wie folgt tun:

export async function getAlbums(user, token){ 
    let response = await axios.get(`https://api.imgur.com/3/account/${user}/albums/`, { 
    headers: { 
     Authorization: `Bearer ${token}`, 
     Accept: 'application/json' 
    } 
    }) 
    return response.data.data || []; 
} 

Sie drängen alles in Reaktion .data.data in store ... warum nicht response.data.data selbst zurückgeben?

dann auch Asynchron verwenden file1.js sollte/erwarten, so dass Sie das Array erhalten, anstatt ein Versprechen ...

async albumsArray() { 
    this.albums = await Utils.getAlbums(this.user, this.token); 
} 

macht Sinn?

+0

Große Antwort. Ich habe gerade die response.data.data in die Datei 1 verschoben und einen Versuch und fangen hinzugefügt, um Fehler zu behandeln: versuchen { lassen Sie speichern = erwarten Utils.getAlbums (this.user, this.token); this.albums = store.data.data.map (Daten => Album.fromJson (this, data)); } fangen (err) { (...) } – KadoBOT

Verwandte Themen