0

私のコードは機能しています。しかし、私はかなり簡単な方法があると確信しています。今のところ、Promise内の '_v'キーにアクセスすることで必要な結果を得ることができます。だから私は何かが間違っていると思うのです。ここでは、コードは次のとおりです。適切なデータを取得しますが、どこにあるのかわかりません

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 || []; 
} 

、それが今ある方法は、私が '_ V' [私はアルバムにしたい結果を得ます]。

Obs:アルバム(this.albums)はログに記録すると約束し、_vは必要なデータがある場所のキーです。私は間違っている。私のコードを見栄え良くするにはどうすればいいですか?

おかげ

+0

トップレベルでは、常に約束に対処する必要があります。 –

答えて

1

/を待つ非同期についてのクールなことは、あなたがこのようにそれを行うことができます...あなたが約束するのではなく、実際の値を取得することです:あなたは、応答内のすべてを推進している

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 || []; 
} 

.data.dataをstoreに...なぜresponse.data.dataを返さないのでしょうか?

はその後file1.jsも非同期を使用する必要があります/ ...あなたが約束するのではなく、配列を取得ので、待つ

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

理にかなっていますか?

+0

偉大な答え。私はファイル1の中にresponse.data.dataを移動し、エラーを処理するためにtryとcatchを追加しました: try { let store = await Utils.getAlbums(this.user、this.token); this.albums = store.data.data.map(data => Album.fromJson(this、data)); } catch(エラー){ (...) } – KadoBOT

関連する問題