【问题标题】:having trouble chaining multiple axios request链接多个 axios 请求时遇到问题
【发布时间】:2019-05-19 11:28:16
【问题描述】:

好的,所以我要做的是执行 axios.get() 请求,专门提取特定数据的 id,然后使用我必须将它作为字符串文字的那个 id,以便我可以执行我的第二个请求。我不断收到信息未定义。

axios
  .get(
    `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
  )
  .then(response => {
    info = response.data.id;
  })
  .then(
    axios.get(
      `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
    )
  )
  .then(response => {
    summoner = response.data;
    return summoner;
  });
let getSummonerId = (req, res) => {
  res.status(200).send(summoner);
};
module.exports = {
  getSummonerId
};

【问题讨论】:

    标签: javascript node.js reactjs axios


    【解决方案1】:

    修复你的链接:

    axios
      .get(
        `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
      )
      .then(response => {
        return response.data.id;
      })
      .then(info => {
        return axios.get(
          `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
        )
      })
      .then(response => {
        summoner = response.data;
        return summoner;
      });
    

    就我个人而言,我建议将 async 用于此类任务。使用 Promise 让处理事情变得更容易:

    let fetchSummoner = async() => {
        const res = await axios.get(`https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`);
    
        const info = res.data.id;
    
        const res2 = await axios.get(`https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`);
    
        const summoner = res2.data;
    
        return summoner;
    }
    

    【讨论】:

    • 哇,它只是返回信息,然后在第二个 .then 上发送信息。非常感谢
    • @ChristianGonzalez Async/Await 链非常棒。考虑检查/使用它:blog.logrocket.com/…
    【解决方案2】:

    在当前代码中,您没有在第二个 axios 请求中添加 return 语句。如果不这样做,将不会获取并返回第二个 url。 请尝试以下代码。

    axios
      .get(
        `https://na1.api.riotgames.com/lol/summoner/v4/summoners/by-name/bloodstrive?api_key=${api}`
      )
      .then(response => {
        return response.data.id;
      })
      .then(info => {
        return axios.get(
          `https://na1.api.riotgames.com/lol/league/v4/entries/by-summoner/${info}?api_key=${api}`
        )
      })
      .then(response => {
        summoner = response.data;
        return summoner;
      });
    

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 2019-08-02
      • 2015-11-13
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2023-03-12
      相关资源
      最近更新 更多