请问axios请求的url中如何包含前一个axios请求得来的信息呢

发布于 2022-09-06 09:49:38 字数 815 浏览 13 评论 0

我先贴一下代码

    class App extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            city:"北京"
        };
    }

    componentDidMount() {
            axios.post('//获取所在城市名称的api')
            .then((response)=>{
                this.setState({city:response.data});
            })
            .catch((err)=>{
                console.log(err);
            });
            
            axios.get('//需要包含城市名称的api')
            .then((response)=>{
            })
            .catch((err)=>{
            })
    }
 }

但是由于axios的异步处理,在this.setState({city:response.data});之前就已经执行下一次axios的request了,所以请求的url中经常包含(北京(默认的初始值)),请问如何才能使其包含上一次axios请求得来的信息呢。

PS:我想过在then和catch里面添加axios函数,但是那样似乎就将axios重用了(用了两遍),所以我想请教一下有没有更好的方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我纯我任性 2022-09-13 09:49:39

看起来你是这个意思:

new Promise((resolve, reject) => {
  axios.post('//获取所在城市名称的api')
    .then((response)=>{
      resolve({city: response.data});
    })
    .catch((err)=>{
      resolve({city: this.state.city})
    });
})
.then(({city}) => {
  axios.get('//需要包含城市名称的api')
  .then((response)=>{
  })
  .catch((err)=>{
  })
})
忆梦 2022-09-13 09:49:39

1、在第一个请求成功那里调用第二个请求
2、async/await

阪姬 2022-09-13 09:49:39

在第一个then里面发起第二次请求

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文