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

我先贴一下代码

    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重用了(用了两遍),所以我想请教一下有没有更好的方法。

阅读 5.4k
3 个回答

看起来你是这个意思:

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)=>{
  })
})
1、在第一个请求成功那里调用第二个请求
2、async/await
新手上路,请多包涵

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题