0

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

file1.js

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

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

ユーティリティ.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: albums(this.albums) は、ログに記録するときの約束であり、_v は、必要なデータがあるキーです。私が間違っていること。コードの見栄えを良くするにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

async/await の優れた点は、promise ではなく実際の値を取得できることです。次のように実行できます。

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

response.data.data 内のすべてをストアにプッシュしています... response.data.data 自体を返さないのはなぜですか?

次に、 file1.js も async/await を使用する必要があるため、約束の代わりに配列を取得します...

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

理にかなっていますか?

于 2016-04-10T03:31:02.627 に答える