【JS】vue中如何实现同步请求

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

回答

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

【JS】vue中如何实现同步请求

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)

})

})

以上是 【JS】vue中如何实现同步请求 的全部内容, 来源链接: utcz.com/a/85943.html

回到顶部