如何使用axios和promise从URL数组中获取数据

我有这个端点,可以为我提供有关特定字符的信息,如下所示:

端点: https://rickandmortyapi.com/api/character/1

给我一​​个对象,它具有chracter的名称以及其他属性,这些属性之一称为Episode。

{
  name: 'Ricky',id: 1,episode: [...]
}

并且Episode属性包含一些看起来像这样的网址:

[
  "https://rickandmortyapi.com/api/episode/1","https://rickandmortyapi.com/api/episode/2","https://rickandmortyapi.com/api/episode/3"
  ...
]

我知道我应该使用Promise.all并以某种方式遍历这些,然后解决它们,但我无法使其正常工作。

这是我尝试过的方法,但是我不知道它是否正确,并且无论我做多少次.then

let episodeResponses;

  const episodesResponses = Promise.all(character.episode.map(url => {
    return axios(url)
      .then(resp => episodeResponses = resp)
  }))

  episodesResponses.then(x => console.log(x))

关于如何使它工作的任何想法?

谢谢

a198911 回答:如何使用axios和promise从URL数组中获取数据

以简化形式,此API调用将类似于以下内容。

const episodes = [
    axios('https://rickandmortyapi.com/api/episode/1'),axios('https://rickandmortyapi.com/api/episode/2'),axios('https://rickandmortyapi.com/api/episode/3')
];

Promise.all(episodes).then((data) => {
  const episode1 = data[0];
  const episode2 = data[1];
  const episode3 = data[2];
});

改为致电.then()上的Promise.all。一旦所有的承诺都得到解决,您就可以访问您的数据。

// Create a promise using Promise.all().
const episodeResponses = Promise.all(character.episode.map(url => axios(url)));

// Access the response once all promises are resolved.
episodesResponses.then(x => console.log(x))
本文链接:https://www.f2er.com/2605140.html

大家都在问