vue中如何实现同步请求

路遥心近
  • 42

逻辑是这样的,打开页面先调用获取个人信息接口userInfo,然后根据这个个人信息userInfo返回的ID作为参数去请求其他数据接口。
问题就是,axios是异步操作,userInfo还没来得及返回ID,其他接口就已经在请求了,参数传的都是默认的空,这样肯定就返回相应数据。这个有什么办法实现同步吗?或者其他解决方案,谢谢了。

评论
阅读 40.5k
6 个回答
✓ 已被采纳

axios实质上是promise,所以可以用then之类的构成一个链。如果深入理解async/await貌似也能实现局部的顺序动作

axios 是基于 promise 开发的,那就采用 promise 的写法来就行了

axios.get('xxx')
    .then(res => {
        return res.data //  你要在接下来使用的 data
    }).then(data => {
         // 这里调用上面的 res.data
    })

那就把其他请求接口的函数写在获取个人信息接口userInfo返回成功的函数里

用watch试试看

我也遇到过这样的情况,当时没多想,就是简单的做了下嵌套,在第一次请求成功后发起第二次请求

axios.get('/api/info')
.then(res => {
    let id = res.data.id
    axios.get('api/next', params: {
        params: { id }
    }).then( res => {
        console.log(res)
    })
})
宣传栏